[JPA] JPQL - 경로 표현식

·2024년 4월 21일
0

JPA

목록 보기
14/17
post-thumbnail

💡경로 표현식

  • .(점)을 찍어 객체 그래프를 탐색하는 것
select m.username -> 상태 필드
	from Member m
	join m.team t -> 단일 값 연관 필드
	join m.orders o -> 컬렉션 값 연관 필드
where t.name ='팀A'

📗경로 표현식 용어 정리

  • 상태 필드(state field) : 단순히 값을 저장하기 위한 필드(ex:m.username)
  • 연관 필드(association field) : 연관관계를 위한 필드
    • 단일 값 연관 필드 :
      @ManyToOne, @OneToOne, 대상이 엔티티(ex:m.team)
    • 컬렉션 값 연관 필드 :
      @OneToMany, @ManyToMany, 대상이 컬렉션(ex:m.orders)

📗경로 표현식 특징

  • 상태 필드(state field) : 경로 탐색의 끝, 탐색x
	select m.username from Member m;
  • 단일 값 연관 경로 : 묵시적 내부 조인(inner join) 발생, 탐색O
	select m.team.name from Member m; //team에서 경로탐색이 더 가능
  • 컬렉션 값 연관 경로 : 묵시적 내부 조인 발생, 탐색X
    • FROM 절에서 명시적 조인을 통해 별칭을 얻으면 별칭을 통해 탐색 가능
		select m.username from Team t join t.members m;

📗명시적 조인, 묵시적 조인

명시적 조인

  • join 키워드를 직접 사용하여 조인
    • select m from Member m join m.team t

묵시적 조인

  • 경로 표현식에 의해 묵시적으로 SQL 조인 발생(내부 조인만 가능)
    • select m.team from Member m
      ➡️from절에서 member와 팀을 조인

❌실무에서는 가급적 묵시적 조인 대신에 명시적 조인을 사용하자
조인은 SQL 튜닝에 중요 포인트
묵시적 조인은 조인이 일어나는 상황을 한눈에 파악하기 어렵다

profile
백엔드 개발자를 꿈꿉니다 / 이전 블로그 : https://po-dadak.tistory.com/category

0개의 댓글

관련 채용 정보