조인
내부 조인
SELECT m
FROM Member m [INNER] JOIN m.team t
team 데이터가 없으면 그 줄은 출력되지 않는다.
괄호 안의 키워드는 생략 가능하다.
외부 조인
SELECT m
FROM Member m LEFT [OUTER] JOIN m.team t
데이터가 없어도 null로 다 출력된다.
세타 조인
select count(m)
from Member m,
Team t
where m.username = t.name
연관 관계가 전혀 없는 데이터를 카티시안 곱으로 모든 짝을 불러온 뒤, 그 중 조건에 맞는 걸 찾는다.
ON 절
JPA 2.1부터 지원하는 기능
조인할 대상을 미리 필터링 할 수 있다.
연관 관계 없는 Entity도 외부 조인할 수 있다.
과거에는 내부 조인만 가능했다.
하이버네이트 5.1부터 지원한다.
조인 대상 필터링
SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A'
회원과 팀을 대상으로 팀 이름이 A인 팀만 조인한다.
SELECT m.*, t.*
FROM Member m
LEFT JOIN Team t ON m.TEAM_ID = t.id and t.name = 'A'
실제 나가는 SQL
연관 관계 없는 Entity 외부 조인
SELECT m, t FROM Member m LEFT JOIN Team t on m.username = t.name
회원의 이름과 팀의 이름이 같은 데이터를 대상으로 외부 조인한다.
SELECT m.*, t.*
FROM Member m
LEFT JOIN Team t ON m.username = t.name
실제 나가는 SQL
Last updated
Was this helpful?