728x90
내부 조인
SELECT m FROM Member m [INNER] JOIN m.team t
외부 조인
SELECT m FROM Member m LEFT [OUTER] JOIN m.team t
세타 조인
SELECT count(m) FROM Member m, Team t WHERE m.username = t.name
FROM Member m, Team t로 하면 카테시안 곱으로 전부 곱한 테이블에서 WHERE 절의 조건에 맞는 데이터가 필터링된다.
ON 절
- ON 절을 활용한 조인 조건 추가(JPA 2.1부터 지원)
- 1. 조인 대상 필터링
- 예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인
- JPQL
- SELECT m, t FROM Member m LEFT JOIN m.team t ON t.name = 'A'
- 멤버와 팀을 조인하고 팀의 이름이 'A'인 멤버만 멤버와 팀을 select한다.
- SQL
- SELECT m.*, t.* FROM MEMBER m LEFT JOIN Team t ON m.TEAM_ID=t.id and t.name='A'
- 2. 연관관계없는 엔티티 외부 조인(하이버네이트 5.1부터)
- 예) 회원의 이름과 팀의 이름이 같은 대상 외부 조인
- JPQL
- SELECT m, t FROM Member m LEFT JOIN Team on m.username=t.name
- SQL
- SELECT m.*, t.* FROM Member m LEFT JOIN Team t ON m.username=t.name
- 아무 연관관계가 없어도 LEFT JOIN을 할 수 있다.
- 1. 조인 대상 필터링
참고
김영한 - 자바 ORM 표준 JPA 프로그래밍
728x90
'[JAVA] > JPA' 카테고리의 다른 글
JPQL - 타입 표현과 기타식 (0) | 2023.05.01 |
---|---|
JPQL - 서브 쿼리 (0) | 2023.05.01 |
JPQL - 페이징 API (0) | 2023.05.01 |
JPQL - 프로젝션 (0) | 2023.05.01 |
JPA가 지원하는 다양한 쿼리 방법(JPQL, QueryDSL 등) (0) | 2023.04.22 |