• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

뭘 사용할지 선택에 있어서 질문입니다.

23.04.28 21:43 작성 조회수 267

0

EntityManger를 주입받는 방법으로

private final EntityManager em;

이렇게 선언하고 @RequiredArgsConstructor로 받을 수도 있고,

이번 강의에서처럼 @PersistenceContext로 받을 수도 있는데 각각의 차이점이 무엇인가요 ?

 

public long count() {
    return em.createQuery("select count(m) from Member m", Long.class)
            .getSingleResult();
}

또 여기서 메소드 선언문에는 long 타입을 반환타입으로 설정했는데 createQuery의 2번째 파라미터로는 Long값을 주는데 어떤 이유인지 궁금합니다.

답변 1

답변을 작성해보세요.

1

David님의 프로필

David

2023.04.29

안녕하세요. hjemsti님, 공식 서포터즈 David입니다.

  1. @RequiredArgsConstructor는 private final 로 선언된 변수를 주입받는 생성자를 만듭니다. 또한 스프링부트는 1개의 생성자일 때 생성자에 @Autowired를 붙여주지 않아도 @Autowired가 붙여진 것과 동일하게 동작합니다. 즉, 지금 물으시는 질문은 @Autowired와 @PersistenceContext의 차이를 묻고 계신걸로 이해했습니다. 다음 글 답변을 참고해 주세요:) https://www.inflearn.com/questions/152202

  2. 다음 글 답변을 참고해 주세요. https://www.inflearn.com/questions/856916

감사합니다.