[JPA] join 과 join fetch 의 차이

charco·2021년 8월 9일
0

나도TIL

목록 보기
17/55

다음 두 쿼리의 차이는 무엇일까

SELECT c from Account c inner join c.person  
SELECT c from Account c inner join fetch c.person

Person 이 Account 안에 있다는 가정 하에

SELECT c from Account c inner join c.person  

이 쿼리는 person 을 갖고있는 모든 Account를 반환한다.
그러나 나중에 c.getPerson() 처럼 person을 불러와야 한다면 해당 Account의 person을 불러와야 하기 때문에
hibernate 가 내부적으로 쿼리를 하나 더 날린다.

다시 말해 위의 쿼리는 Person 오브젝트까지 가져오지는 않는다.

따라서, 더 쿼리의 낭비를 하지 않기 위해 join fetch를 쓰는게 좋다.

SELECT c from Account c inner join fetch c.person

join fetch 는 c.person 오브젝트도 불러온다.

출처 : https://stackoverflow.com/questions/21533400/what-is-the-difference-between-inner-join-and-inner-join-fetch-hql

profile
아직 배우는 중입니다

0개의 댓글