1. 조인 - 기본 조인(Join, Click)
조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고,
두 번째 파라미터에 별칭(alias)으로 사용할 Q 타입을 지정하면 된다.
1-1) MemberTest
1-2) QuerydslBasicTest
Console
1-2) 연관관계가 없어도 가능한 theta join
Console
2. 조인 - on절
2-1) QuerydslBasicTest
Console
Console-2
2-2) QuerydslTest
외부 조인이 아니라 내부 조인(inner Join)을 사용하면 where절에서
필터링하는 것과 기능이 동일하다.
따라서 on 절을 활용한 조인 대상 필터링을 사용할 때 내부 조인이면
익숙한 where 절로 해결하고, 정말 외부조인이 필요한 경우에만 이 기능을 사용하자.
Console
2-3) QuerydslTest
Console
Console
정리
하이버네이트 5.1부터 on 을 사용해서 서로 관계가 없는 필드로 외부 조인하는 기능이 추가되었다.
물론 내부 조인도 가능하다.
주의! 문법을 잘 봐야 한다. leftJoin() 부분에 일반 조인과 다르게 엔티티 하나만 들어간다.
일반조인: leftJoin(member.team, team)
on조인: from(member).leftJoin(team).on(xxx)
3. 조인 - 페치 조인
3-1) 페치 조인 미적용
3-1)-1. 페치 조인 미적용
페치 조인은 SQL에서 제공하는 기능은 아니다. SQL 조인을 활용해서 연관된 엔티티를
SQL 한 번에 조회하는 기능이다. 주로 성능 최적화에 사용하는 방법이다.
Console
Team이 fetch = FetchType.LAZY이기 때문에 현재 DB에서 조회할 때
Member만 조회가 됨.
3-1)-2. 페치 조인 미적용 검증
3-2) 페치 조인 적용
SQL 조인을 활용해서 연관된 엔티티를
SQL 한 번에 조회하는 기능이다. 주로 성능 최적화에 사용하는 방법이다.
join(member.team, team).fetchJoin()
where(member.username.eq(”member1))
Console