인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

물미구님의 프로필 이미지
물미구

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

fetch join 과 일반 join 에서 궁금한점 있습니다..

해결된 질문

작성

·

156

0

post와 user 가 다 대 일 관계이고, lazy로딩을 걸어놓은 상태에서,

post와 연관된 user의 정보를 가져오고싶을때,

일반 join jpql : select u.nickName, u.age ... from Post p join p.user u;

fetch  join jpql : select p from Post join fetch p.user; 

둘 다 n+1 문제를 예방할 수 있는 건가요?

 

답변 1

0

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

어떠한 목적으로 사용하실 지는 모르겠으나 fetch join과 일반 join을 통한 차이를 인지하고 사용하시면 될 것 같습니다. 밑의 링크를 참고해주세요!

https://cobbybb.tistory.com/18


감사합니다.

물미구님의 프로필 이미지
물미구
질문자

답변 감사합니다!!

일반 조인의 경우 select 절에서 지정한 엔티티만 조회하고

페치 조인의 경우 select 절에서 지정한 엔티티와 연관된 엔티티까지 한번에 조회하는 건데..

select m,t from Member m join m.team t; 

이런 식으로 일반조인쿼리를 날리면,

결국 select 절에서 지정한 member와 team 엔티티가 모두 조회되는것아닌가요??

그런 식으로 하는 것은 생각해보지 못했는데, 감사합니다 ㅎㅎ
질문이 있습니다. 

반환타입을 DTO로 하시는 걸까요? 아니면 위에 처음 질문으로 생각해본다면 Post를 중심으로 해서 생각하셨을까요?(아마 위 JPQL 이라면 반환 타입이 엔티티로 안될 가능성이 많고 DTO로 해야할 것으로 보입니다.)

그리고 이제보니 위에 적어주셨던 일반 join문을 보니 저렇게 한다면 아마 dto로 한방쿼리로 나올 것 같습니다. 
꼼꼼하게 보지못한 점, 죄송합니다 ㅜ

물미구님의 프로필 이미지
물미구

작성한 질문수

질문하기