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

작성자 없음

작성자 정보가 삭제된 글입니다.

실전! Querydsl

조인 - 페치 조인

fetchJoin() 외에 Team 엔티티 가져오기

작성

·

186

0

안녕하세요 강사님, 항상 좋은 강의 잘 듣고 있습니다!

강의에서 fetchJoin()을 했을때와 하지 않았을때의 차이는 앞서 수강했던  JPA 강의에서 학습을 했기 때문에 이해 했습니다.

강의를 수강하던 중, fetchJoin()을 사용하지 않고도 Team 엔티티를 가져올 수 있는 방법이 있을까 고민해본 결과, 아래의 코드가 나왔습니다.

em.flush();
em.clear();
Tuple findMemberJoinB = factory
.select(member, team)
.from(member)
.join(member.team, team)
.fetchFirst();
Team findTeamB = findMemberJoinB.get(1, Team.class);
System.out.println("findTeamB = " + findTeamB);

실행 결과, Team 엔티티도 의도한대로 가져오고, 쿼리문도 fetchJoin을 사용 했을때와 동일하게 하나의 쿼리문만 처리되는 것을 확인 했습니다.

(

select ...(생략)...

from member member0_

inner join team team1_

on member0_.team_id=team1_.team_id limit 1;

)

 

이렇게 연관된 엔티티를 가져오는 것이 fetchJoin을 사용했을때와의 동일한 결과인 것이 맞나요? 혹시 이렇게 할 경우 생길 수 있는 오류가 있을까요?

답변 감사드립니다!

답변 1

0

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

안녕하세요. k_ms1998님

fetch join은 member 엔티티를 가져오면서 그 안에 연관된 team도 함께 member 엔티티에 포함해서 가지고 오는 것입니다. 쉽게 이야기해서 member만 조회하지만, 연관된 team도 함께 조회되는 것이지요.

지금 보여주신 것은 일반적인 join을 사용한 것이고, member와 team을 각각 조회한 것입니다.

관련해서 더 자세한 내용은 다음을 참고해주세요.

https://www.inflearn.com/questions/33719

감사합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기