[JPA 기본 - JPQL] 경로 표현식

강신현·2022년 7월 27일
0

✅ 상태 필드 ✅ 연관 필드 ✅ 명시적 조인 ✅ 묵시적 조인


경로 표현식

select m.username -> 상태 필드
	from Member m
		join m.team t -> 단일 값 연관 필드
		join m.orders o -> 컬렉션 값 연관 필드
where t.name = '팀A'

1. 상태 필드(state field)

단순히 값을 저장하기 위한 필드

  • 경로 탐색의 끝, 더이상 탐색이 안됨

2. 연관 필드(association field)

연관관계를 위한 필드

- 단일 값 연관 필드

  • 대상이 엔티티
  • @ManyToOne, @OneToOne
  • 묵시적 내부 조인(inner join) 발생
    • 조심해서 사용해야 함
    • 쿼리 튜닝이 어렵
    • 묵시적 내부 조인이 발생하지 않는쪽으로 개발하는 것이 좋다
  • 더 탐색이 가능

- 컬렉션 값 연관 필드

  • 대상이 컬렉션
  • @OneToMany, @ManyToMany
  • 묵시적 내부 조인(inner join) 발생
    • 조심해서 사용해야 함
    • 쿼리 튜닝이 어렵
    • 묵시적 내부 조인이 발생하지 않는쪽으로 개발하는 것이 좋다
  • 더 탐색이 불가능

명시적 조인 vs 묵시적 조인

명시적 조인

join 키워드 직접 사용

select m from Member m join m.team t

묵시적 조인

표현식에 의해 묵시적으로 SQL 조인 발생 (내부 조인만 가능)
조인이 일어나는 상황을 한눈에 파악하기 어려움

select m.team from Member m

👉 컬렉션은 경로 탐색의 끝이므로, 명시적 조인 (join 키워드 직접 사용)으로 별칭(m)을 얻어 사용하는 것이 좋다.

profile
땅콩의 모험 (server)

0개의 댓글