전체 글

전체 글

    [보안] OAuth란? (OAuth1.0, OAuth2.0)

    OAuth는 Open Authorization의 줄임말입니다. 웹개발, 특히 보안이 중요한 로그인 회원가입에 대한 개발을 하다보면 한번쯤은 보는 단어죠!. 오늘은 이 OAuth에 대해 알아보겠습니다! OAuth 탄생배경 서비스를 이용하다보면 한 서비스가 다른 서비스와 연동이 되는 경우를 볼 수 있습니다. Facebook이나 트위터가 세상에 널리 퍼지게된 이유 중에 하나가 외부 서비스에서도 Facebook과 트위터의 일부 기능을 사용할 수 있게 한 것입니다. 외부 서비스와 연동되는 Facebook이나 트위터의 기능을 이용하기 위해 사용자가 반드시 Facebook이나 트위터에 로그인해야 하는 것이 아니라, 별도의 인증 절차를 거치면 다른 서비스에서 Facebook과 트위터의 기능을 이용할 수 있게 되는 것입..

    [Java] 동일성(identity)과 동등성(equality)

    개발을 하다보면 객체나 변수를 비교할일이 많이 있습니다~! 어떨땐 주로 == 로 비교를 하고 어떨땐 equals() 함수를 써서 비교하는데요 이 비교문의 의미와 비교문으로 동일성과 동등성을 어떻게 비교하는지 알아보겠습니다. 동일성 (identity) 동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미합니다. 여기서 완전히 같다는 뜻은 두 객체가 바라보는 메모리 주소가 똑같다는 것이죠! 따라서 사실상 하나의 객체로 봐도 무방합니다. 위 그림을 볼까요? 자바에서 객체가 메모리에 저장될때 실제 정보는 jvm에 할당된 heap 메모리에 저장되고 그 객체의 주소는 스택 영역에 저장됩니다. 우리가 DannyObject do1 = new DannyObject();같은 코드를 써서 새로운 객체를 생성하..

    [JPA] 영속성 컨텍스트(Persistence Context)란?

    처음에 Young속성? 어린 속성인가? 라고 생각했던 제 자신이 부끄러워지는 순간입니다... 하하 자 JPA 라는 개념을 접하면 반드시 마주하는 단어가 바로 이 영속성 컨텍스트인데요! 오늘은 살짝 복잡하지만 저희의 삶을 편하게 해주는 JPA의 영속성 컨텍스트에 대해 알아보겠습니다! 영속성 컨텍스트(Persistence Context)의 개념 "영속성"은 사전적인 의미로 "오래도록 또는 영원히 계속되는 성질이나 능력"입니다. 프로그래밍 상에서 영원이 계속된다는 건 무슨 뜻일까요? 바로 프로그램이 아무리 종료되고 재시작되어도 남아있는 것이죠. 예를 들면 프로그램이 실행된 후 부터 생명주기를 가지는 객체보다는, DB에 저장된 데이터가 영속성을 가졌다고 볼 수 있겠죠. 이러한 뜻에서 영속성 컨텍스트란 엔티티를 ..

    [Spring] JPA, Hibernate, Spring Data JPA 는 다르다!

    혹시 JPA에 대해 이런 경험이 있으신가요? A: 어? JPA 저도 쓰는데요 그거 완전 편하죠 ㅎㅎㅎ 막 findBy어쩌구하면 DB에서 다 찾아주잖아요 나: 아 그래요? (구글검색) J..P..A..란..? -> JPA란 "자바 ORM에 대한 API 표준 명세"이다. 나: 아니 API 도 아니고 그냥 표준 "명세"라는데 그걸 쓸수가 있나..? 나: J..P.....A 사용법 검색 -> 안녕하세요 잇님들 요즘 날씨가 쌀쌀하죠^^ 오늘은 JPA를 사용해보는법에 대해서 알아볼거에요. 이렇게 설정해주세요 #JPA 설정 #하이버네이트 Dialect (사투리) 설정 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect #하이버네이트..

    [Spring Batch] Chunk와 Tasklet의 차이

    [Spring Batch] 스프링 배치(Spring Batch) 란? 편에서 스프링 배치에 대해서 설명했었습니다! 요약하자면 데이터를 일괄적으로 처리하기위한 애플리케이션이라고 할 수 있을것 같네요.이를 위해 Job과 Job을 구성하는 한개 또는 여러개의 Step이 존재했었죠. 스프링 배치는 Step 을 Chunk와 Tasklet 두가지 방식으로 제공합니다. 두개가 어떻게 다르고, 어떤 상황에서 무엇을 써야할지 지금부터 알아보겠습니다! Chunk 방식 Chunk 방식을 이해하려면 먼저 아래에 대한 이해가 필요합니다. ItemReader: DB 또는 파일에서 데이터를 읽어오는 역할을 합니다. ItemReader에 대한 다양한 인터페이스가 존재하며 다양한 방법으로 Item을 읽어 올 수 있습니다. ItemPr..

    [Spring Batch] 스프링 배치(Spring Batch) 란?

    배치(Batch)란? Batch 라는 단어는 일괄처리 라는 뜻을 가지고 있습니다. 따라서 배치 애플리케이션(Batch Application)이란 단발성으로 대용량의 데이터를 처리하는 애플리케이션을 의미합니다. 배치 애플리케이션은 다음의 조건을 만족해야 합니다. 대용량 데이터: 대량의 데이터를 가져오거나, 전달하거나, 계산하는 등의 처리를 할 수 ​​있어야 합니다. 자동화: 심각한 문제 해결을 제외하고는 사용자 개입 없이 실행되어야 합니다. 견고성: 잘못된 데이터를 충돌/중단 없이 처리할 수 있어야 합니다. 신뢰성: 무엇이 잘못되었는지를 추적할 수 있어야 합니다. (로깅, 알림) 성능: 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션을 방해하지 않도록 수행되어야합니다. 스프링 배치란?..

    [Java] 싱글톤 패턴 (Singleton Pattern)

    세상에 무한으로 존재하는 자원은 없습니다. 컴퓨터도 마찬가지죠. 가비지 컬렉션(GC)편에서도 볼 수 있듯 이러한 한정된 메모리를 최대한 효율적으로 사용하는 방법은 여러가지가 있습니다. new MyClass() 같은 코드로 객체를 새롭게 생성을 하면 새로운 메모리 공간에 해당 객체를 위한 정보가 쓰이게 되겠죠. 하지만 하나의 객체만 생성해서 계속해서 재사용하면 어떨까요? 바로 이처럼 싱글턴 패턴은 하나의 객체만을 생성해서 이후에는 처음에 생성된 객체를 반환하여 프로그램 전반에서 하나의 인스턴스만을 사용하게 하는 패턴입니다. 싱글톤 패턴 적용 예제 public class Test { public static void main(String[] args){ DannySingletonClass singletonC..

    [Spring] IoC(Inversion of Control) - 제어의 역전 이란?

    스프링 프레임워크(Spring Framework) 하면 또 빼놓을 수 없는 단어가 DI, IoC가 아닐까 싶은데요! IoC는 스프링 뿐만 아니라 다른 프레임워크에서도 사용되는 범용적인 개념입니다. 왜 IoC라는게 생겼을까요? 무엇을 제어하고 왜 역전이 필요한것일까요? 천천히 한번 알아봅시다. 여기서 제어는 무슨뜻인가요? 여기서 제어라는건 "객체에 대한 주도권을 가지고 있다"라고 생각하셔도 될 것 같습니다. 자바는 객체지향 프로그래밍 언어이고, 모든 객체는 생명주기(Life Cycle - 객제가 생성된 후 부터 폐기될 때까지의 기간) 를 가지고 있습니다. 일반적으로 프레임워크를 사용하지 않는다면, 자바 프로그램은 main() 메소드에서 시작해서 개발자가 미리 정한 순서를 따라 실행됩니다. 따라서 언제 객체..

    [Spring] AOP - 관점 지향 프로그래밍 이란?

    AOP는 Aspect Oriented Programming을 줄인말로 "관점지향" 프로그래밍이라는 뜻을 가지고 있습니다! 네?!?! 관점지향이요?? 객체지향(OOP)이랑 절차지향(PP)만 있는거 아니었어요?? 전 중립이어서 아무 관점도 없는데요..?? ...라고 하시진 않겠죠 ㅋㅋㅋ.. 농담입니다. AOP는 스프링 철학의 기반이 된 POJO를 이루는 삼각형에도 등장한 아주 중요한 개념입니다. 간단해보이면서도 새로운 단어와 개념이 많아서 이해하는데는 조금 시간이 걸렸던 것 같습니다. 오늘은 이 AOP에 대해서 천천히 알아보겠습니다. [*중요*] 그냥 AOP 라고만 한다면 "AOP"와 AOP의 구현체를 제공하는 "스프링 AOP"에 대해 중의적일 수 있으므로, 두개를 구분지어서 말씀드리는 점 꼭 참고해주세요!..

    [Spring] 스프링 프레임워크(Spring framework)의 탄생 배경 (feat. CGI, Servlet, JSP, J2EE, EJB) - 3편(최종)

    아직 1편, 2편을 안보셨다면 먼저 보고와주세요~! [Spring] 스프링 프레임워크(Spring framework)의 탄생 배경 (feat. CGI, Servlet, JSP, J2EE, EJB) - 1편 [Spring] 스프링 프레임워크(Spring framework)의 탄생 배경 (feat. CGI, Servlet, JSP, J2EE, EJB) - 2편 자 드디어 스프링의 탄생이 코앞까지 왔습니다. 1편, 2편을 요약해서 다시 한번 스프링의 탄생으로 이어지는 순서만 되짚어볼까요? HTTP통신으로 정적인 데이터만 전송 서버와 통신하여 동적으로 페이지를 보여줄 수 있는 개념의 인터페이스 CGI(Common Gateway Interface) 등장 자바(Java)버전 CGI라고 불리는 서블릿(Servlet)..