-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
MemberRepository 와 ItemRepository에서의 em 차이점
21.05.09 13:09 작성 조회수 140
1
김영한 강사님 안녕하세요. 좋은 강의 항상 잘 보고있습니다! ㅎㅎ
다름이 아니라 강의를 쭉 듣던 중 궁금증이 생겼습니다.
MemberRepository에서 em은 @PersistenceContext를 붙였는데
ItemRepository에서는 @PersistenceContext를 붙이지 않고 그냥 final 처리만 되어있습니다.
제가 보기엔 둘다 같은 역할을 하는 em인것 같은데 소스코드에서는 왜 다르게 구현하신건지 궁금합니다!
답변을 작성해보세요.
1
김영한
지식공유자2021.05.09
안녕하세요. bobsini601님^^
EntityManager를 주입 받으려면, @PersistenceContext로 주입을 받으면 됩니다.
그런데 스프링에서는 @Autowired나, 생성자 주입을 통해서도 EntityManager를 주입을 받을 수 있습니다.
private final EntityManager em; 부분은 위에 보시면 @RequiredArgsConstructor이 붙어 있는데요.
이 롬복 애노테이션이 있으면 final 부분을 가지고 생성자를 자동으로 만들어줍니다.
스프링은 생성자가 하나만 있으면 의존관계를 자동으로 주입해줍니다.
결과적으로 @PersistenceContext를 사용하는 코드와 생성자 주입을 사용하는 코드는 모두 EntityManager를 의존관계 주입받는 같은 코드입니다.
스프링의 생성자 주입에 대한 자세한 내용은 다음 강의를 참고해주세요.
감사합니다.
답변 1