본문 바로가기

Spring

(14)
[Spring JPA] JPA 에서 fetch join(페치 조인)이란 SQL 문에서 outer join , inner join 등 join 문에 대해서는 익히 알고 있다. 그런데 fetch join(페치 조인)은 어떠한 것일까   페치 조인이란? 먼저, fetch join 은 SQL에서 사용하는 join문이 아니라, JPQL에서 사용하는 성능 최적화를 위해 제공하는 조인의 한 종류이다.연관된 엔티티나 컬렉션을 한 번에 조회할 수 있는 기능으로, 기본적인 기능은 join과 유사하기 때문에 쉽게 이해할 수 있을 것이다.  jpql에서  join fetch 명령어를 이용해 사용할 수 있다.  JPA에서는 데이터를 조회할 때 지연로딩, 즉시로딩 두가지 기법이 있는데, 지연로딩을 기본적으로 사용하고 간다. 주의: 지연 로딩(LAZY)을 피하기 위해 즉시 로딩(EARGR)으로 설정하..
컴포넌트 스캔 이전에 까지는 스프링 빈을 등록할때 @Bean을 코드에 작성하여 진행하였다. 이렇게 등록하는 것을 수동으로 하나하나씩 하기때문에, 수동 빈 등록이라고 부른다. 누가봐도 귀찮은 과정이기 때문에, 자동적으로 빈을 등록하는 과정에 대해서 알아 보자. 💻 @Component & @ComponentScan @Component 어노테이션을 쓰면 이 어노테이션이 붙은 클래스가 스프링 빈의 등록대상이 된다. 사용방법은 간단하게 스프링 빈으로 등록을 원하는 클래스 상단에 해당 어노테이션을 붙여주면 된다. @Component public class MemomryMemberRepository implements MemberRepository() @ComponentScan 어노테이션을 붙여주면, 이름 그대로 @Componen..
싱글톤 컨테이너 이전에 우리는 스프링 컨테이너의 존재와 필요성에 대해서 느꼈다. 이러한 스프링 컨테이너는 싱글톤 패턴의 형태로 되어 있는데, 싱글톤은 무엇인지 그리고, 싱글톤 컨테이너는 어떻게 구성되어 있는지 알아보자. 💻 싱글톤 패턴 먼저, 싱글톤 패턴이 무엇인지부터 알아보자. 예전 학부 수업중 디자인 패턴을 몇개 알아본 적이 있는데, 그 중에 싱글톤 패턴에 대해서도 다뤘었다. 그 당시는 어려워서 자세한 구현 방법은 제대로 알지 못하였고, 객체를 하나만 생성한다는 것만 알았다. 싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성 되는 것을 보장하는 디자인 패턴이다. 이 싱글톤 디자인 패턴을 따르는 것들은 객체 인스턴스가 2개 이상 생성되지 못한다. 이렇게 구성하는 방식은 꽤나 간단하다. public class Sing..
스프링 빈과 스프링 컨테이너 저번 포스팅에서는 DI(Dependency Injection)에 대해서 알아 보았다. 이번에는 스프링에서 DI를 통해 의존관계를 주입해주는 이 스프링 컨테이너에 대해서 알아보자. 💻 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 먼저, 스프링 컨테이너가 생성되는 코드를 보자. 여기서 AoolicationContext라는 인터페이스를 스프링 컨테이너라고 한다. 위 코드는 AppConfig라는 클래스에 속해있는 스프링 빈들을 스프링 컨테이너에서는 스프링 빈들의 생성,삭제,관리등을 담당한다. 스프링 빈에 대해서 간단하게 짚고 넘어가자면, 하나의 자바 객체이다. 우..
DI - 의존관계 주입 이번 포스팅에서는 스프링에서 중요한 DI의 개념에 대해서 적어보도록 하겠다. DI - 의존관계 주입 DI(Dependency Injection)을 번역하면 의존관계 주입 혹은 의존성 주입으로 부른다. 허나, 의존이 하나의 관계를 띄고 있고, 그 관계가 상당히 중요한 역할을 하므로 의존관계라고 부르도록 하겠다. 먼저,의존관계 주입을 알기 위해서는 의존관계가 무엇인지 알아봐야 한다. ■ 의존관계란? A는 B와 의존관계다. 라고 말한다면, 의존 대상 B가 변할 때, 그것이 A에 영향을 미친다. 예를 들어, 건축가가 있다고 치자. 그 건축가는 설계도를 보며 건물을 짓는다. 허나, 중간에 설계도가 변경이 되면 건축가는 다른 모양으로 건물을 짓게 될것이다. 설계도의 변화가 건축가에게 영향을 미쳤다. 이를 통해 건축..
다형성과 좋은 객체 지향 설계의 5가지 원칙(SOLID) 클린코드로 유명한 로버트 마틴이 작성해둔 좋은 객체 지향 설계의 5가지 원칙(SOLID 원칙)에 대해서 정리해보려 한다. 그전에 앞서, 먼저 가장 중요한 다형성의 개념에 대해서 짚고 넘어가겠다. 💻 다형성 역할과 구현의 측면에서 다형성을 설명할 수 있다. 객체를 설계할 때, 인터페이스를 만들고, 그 인터페이스를 상속하는 클래스들을 만들자. 이렇게 되면, 우리는 클래스를 잘 알지 못하더라도, 인터페이스의 역할만 알아도 모든 클래스를 사용할 수 있게 된다. 예를 들어, Car라는 인터페이스가 있고, 이것을 genesis,k5등의 여러 클래스가 상속하고 있다고 치자. 이렇게 되면, 클라이언트는 Car라는 인터페이스를 알면, 모든 클래스를 사용하는 법을 아는 것이다. 이렇게 우리는 역할을 의미하는 인터페이스를 ..