인프런 커뮤니티 질문&답변

Jon님의 프로필 이미지
Jon

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

주문 조회 V4: JPA에서 DTO 직접 조회

dto에서의 join질문이있습니다.

작성

·

431

12

좋은강의감사합니다.

질문이있습니다.

엔티티조회방식에선 fetch join을 했는데, 

여기에선 왜 일반 join을 하는 것인가요??

답변 3

14

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 종석님

fetch join은 select 결과에서 항상 엔티티를 조회해야 합니다.

fetch join 기능은 엔티티 객체와 객체 그래프를 함께 조회하는 것이 목적입니다.

반면에 일반 join은 데이터베이스가 제공하는 join과 동일한 기능입니다. 따라서 select에서 원하는 필드를 바로 조회할 수 있습니다.

감사합니다.

1

join이 되는 엔티티 필드가 select 프로젝션에 있으면 프록시 객체가 안 들어가고 헤당 값 DB 조회해서  영속성 컨텍스트에 값이 들어가는 건가요?

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Jeongmin Lee님

영속성 컨텍스트에 보관되는 것은 엔티티만 보관됩니다. select 프로젝션에서 특정 필드를 찍으면 해당 필드들은 보관되지  않습니다.

감사합니다.

0

Jon님의 프로필 이미지
Jon
질문자

여러 테이블을 조인해서 엔티티가 가진 모양이 아닌 전혀 다른 결과를 내야 하면, 페치 조인 보다는 일반 조인을 사용하고 필요한 데이터들만 조회해서 DTO로 반환하는 것이 효과적 

이라고 하셨던것이 여기에 적용되는것일까요?

Jon님의 프로필 이미지
Jon

작성한 질문수

질문하기