-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
안녕하세요 강사님 JPA join에 관련해서 질문이 있습니다.
21.09.29 23:43 작성 조회수 133
0
안녕하세요.
질문은 2가지 정도가 있는데 다음과 같습니다
1. DTO를 반환하는 형태의 JPQL를 작성할 때 join문을 사용해서 쿼리를 작성해주셨습니다.
문득 로그를 보다가 든 생각이 DTO가 아니라 entity를 조회하기 위해 JPQL을 작성할 때, join을 사용하면 즉시로딩이나 지연로딩 관계없이 연관객체에 대해서 N+1문제가 발생하는 걸로 알고 있습니다.
근데 DTO를 반환하는 형태로 JPQL를 작성할 때는 join문을 사용해도 쿼리 한번에 연관객체들의 정보를 가져오더라구요 (강의에서 Order의 Member나 Delivery)
이러한 차이의 이유가 JPQL이 실행 될 때 JPA에서 관리를 하냐 안하냐의 차이로 볼 수 있을까요?
2. JPA는 트랙잭션 안에서만 동작한다고 알고 있습니다.
그런데 강의를 보다보면 Controller에서 Repository를 바로 의존성 주입받아서 사용하시더라구요. @Transaction은 서비스에만 붙어있고 Repository에는 선언되어 있지 않은데 정상적으로 동작하는 것은 조회는 트랙잭션 관계없이 JPA에서 사용이 가능한것인가요?
그 서비스 코드를 작성할 때 조회 메서드는 readOnly속성을 true로 주면서 작성했던 걸 보면 조회할 때도 @Transaction이 선언되어야 동작하는것이 아닌가 하는 생각이 들어서 질문 남겨드립니다.
항상 명강의 해주셔서 감사합니다.
ps. MSA와 관련한 강의는 계획이 없으신가요? ㅎㅎ
답변을 작성해보세요.
답변 1