BackEnd/ORM(JPA)

조인

  • 내부 조인: 교집합 - 공통된 요소가 없다면 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