::= [LEFT [OUTER] | INNER] JOIN FETCH 조인경로
✔ JPQL
select m from Member m join fetch m.team
✔ SQL 쿼리 반환
SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M TEAM_ID = T.ID
- INNER JOIN 실행 팀의 NAME을 조인
- INNER JOIN 임으로 회원4 인 NULL 값은 조인 되지않는다.
- fetch join을 사용해 회원을 조회하면서 동시에 연관된 팀을 함께 조회한다.
✔ JPQL
select t from Team t join fetch t.members where t.name ='팀A'
✔ SQL 쿼리 반환
SELECT T.*,M.* FROM TEAM T INNER JOIN MEMBER M ON T.ID = M.TEAM_ID WHERE T.NAME = '팀A'
- ✔ 컬렉션 페치 조인시 주의할점
- 팀 A를 조회하면 DB입장에서는 일대다 관계임으로 MEMBER에 해당되는 값의 갯수만큼 반환하게 된다.
- 이처럼 로그가 해당 되는 갯수만큼 찍히게된다.
참고 : SQL의 DISTINCT를 추가해도 데이터가 완전히 일치하지않으면 ""SQL결과"" 에서 중복제거가 실패한다