- 내부 조인: 교집합 - 공통된 요소가 없다면 row가 출력되지 않음
- SELECT m FROM Member m [INNER] JOIN m.team t
- 외부 조인: 합집합 공통된 요소가 없어도 Member에 해당하는 row가 출력
- SELECT m FROM Member m LEFT [OUTER] JOIN m.team t
- 세타 조인: 조건을 만족하는 cartesion product가 출력된다 (중복허용)
- Member의 모든 행과 Team의 모든 행이 조인
- select count(m) from Member m, Team t where m.username = t.name
조인 - ON 절
- ON절을 활용한 조인(JPA 2.1부터 지원)
- 1. 조인 대상 필터링
- 2. 연관관계 없는 엔티티 외부 조인(하이버네이트 5.1부터)
1. 조인 대상 필터링
예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인
JPQL:
SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A'
SQL:
SELECT m.*, t.* FROM
Member m LEFT JOIN Team t ON m.TEAM_ID=t.id and t.name = 'A'
2. 연관관계 없는 엔티티 외부 조인
예) 회원의 이름과 팀의 이름이 같은 대상 외부 조인
JPQL:
SELECT m, t FROM
Member m LEFT JOIN Team t on m.username = t.name
SQL
SELECT m.*, t.* FROM
Member m LEFT JOIN Team t ON m.username = t.name
'BackEnd > ORM(JPA)' 카테고리의 다른 글
페이징 API (0) | 2023.02.15 |
---|---|
프로젝션(SELECT) (0) | 2023.02.06 |
JPQL(Java Persistence Query Language) (0) | 2023.01.18 |
객체지향 쿼리 언어(JPQL) (0) | 2023.01.09 |
값 타입 (0) | 2023.01.09 |