10. 객체지향 쿼리 언어 - 기본 문법 (조인)

HotFried·2023년 10월 4일
0

내부 조인

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부터 지원

  1. 조인할 대상을 미리 필터링 할 수 있다.

  2. 연관 관계 없는 Entity 외부 조인 가능
    (하이버네이트 5.1부터 지원)


1. 조인 대상 필터링

ex) 회원과 팀을 조인하면서, 팀 이름이 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 TEAM_ID=t.id and t.name='A'

2. 연관관계 없는 엔티티 외부 조인

ex) 회원의 이름과, 팀의 이름이 같은 대상 외부 조인

  • 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

참고 :

김영한. 『자바 ORM 표준 JPA 프로그래밍』. 에이콘, 2015.

자바 ORM 표준 JPA 프로그래밍 - 기본편

profile
꾸준하게

0개의 댓글