본문 바로가기
자바/JPA

[JPA/Java] JPQL 조인(Join)

by drCode 2023. 5. 9.
728x90
반응형

JPQL을 이용하여 조인을 할 수 있다.

 

내부 조인[INNER JOIN]

SELECT m FROM Member m [INNER] JOIN m.team t

 

외부 조인[OUTER JOIN]

SELECT m FROM Member m LEFT [OUTER] JOIN m.team t

 

세타 조인

SELECT COUNT(m) FROM Member m, Team t WHERE m.username = t.name

 

JPQL에도 ON 절을 이용할 수 있다.

ON 절을 활용한 조인은 JPA 2.1부터 지원되는데,

 

ON 절을 활용한 조인은 

 1) 조인 대상을 필터링할 때

 2) 연관관계가 없는 엔티티를 외부 조인(OUTER JOIN)할 때 인데,

 

연관관계가 없는 엔티티를 외부 조인할 때는 하이버네이트 5.1부터 사용 가능하다.

 

1) 조인 대상 필터링

예시) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인할 때

 

JPQL :

String 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 :

String 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

 

728x90
반응형

'자바 > JPA' 카테고리의 다른 글

[JPA/Java] JPQL 타입 표현과 기타식  (0) 2023.05.09
[JPA/Java] JPQL 서브쿼리  (0) 2023.05.09
[JPA/Java] 페이징 API  (0) 2023.05.03
[JPA/Java] JPQL Projection(프로젝션)  (0) 2023.04.28
[JPA/Java] JPQL 기본 문법과 기능  (0) 2023.04.27

댓글