JPA/Base

JPA - JPQL 중급 #1 (경로 표현식)

2022. 8. 22. 11:48
728x90
반응형

✍경로 표현식?

- 점을 찍어 객체 그래프를 탐색하는 것. 

SELECT m.username -> 상태 필드 ()
   FROM Member m
      JOIN m.team t -> 단일 값 연관 필드
      JOIN m.orders o -> 컬렉션 값 연관 필드 
WHERE t.name = '팀A' 

  • 상태 필드 : 단순히 값을 저장하기 위한 필드 / 경로 탐색의 끝, 탐색 X
  • 연관 필드 : 연관 관계를 위한 필드
    ㆍ 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티  / 묵시적 내부 조인 발생, 탐색 O
    ㆍ 컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션 / 묵시적 내부 조인 발생, 탐색 X

상태 필드 : m.username -> 에서 더 탐색할 수 없음.
단일 값 연관 필드 : m.team.name -> 처럼 더 탐색할 수 있음.
컬렉션 값 연관 필드 : t.members-> 에서 더 탐색할 수 없음.
=> 대신 select m.username from Team t join t.members m 와 같이 명시적 조인을 사용하여 탐색 가능.

- JPA에서 연관 필드를 사용하여 연관 관계의 엔티티를 조회하였을때 SQL에서는 조인이 발생한다. 이를 묵시적 내부 조인이라고 함.

- 내부 조인이 발생하기 때문에 쿼리 튜닝이 힘들어짐, 최대한 묵시적 내부 조인이 발생하지 않도록 설계. 아래 예시 처럼 명시적으로 join을 사용해야한다. 

 

 

- 가급적 묵시적 조인 대신에 명시적 조인 사용.
- 조인은 SQL 튜닝에 중요 포인트이기 때문.
- 묵시적 조인은 조인이 일어나는 상황을 한눈에 파악하기 어려움 

 

 

본 게시글은 김영한님의 Inflearn 강의를 토대로 제작되었습니다.

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

728x90
반응형
저작자표시 (새창열림)
'JPA/Base' 카테고리의 다른 글
  • JPA - 중급 #3 (다형성 쿼리, 엔티티 직접 사용, Named 쿼리, 벌크연산)
  • JPA - 중급 #2 페치 조인(Fetch Join)
  • JPA - JPQL 기본 # 2 (조인, 서브 쿼리, 타입 표현)
  • JPA - JPQL 기본 #1 (파라미터 바인딩, 프로젝션 / 조회, 페이징)
KAispread
KAispread
개발에 관련된 학습 내용들을 기록하는 공간입니다.
반응형
KAispread
기억의 정류장
KAispread
전체
오늘
어제
  • All (120)
    • Language (27)
      • Java (14)
      • JavaScript (4)
      • Principle (2)
      • Summary (7)
    • Web (10)
      • Template (4)
      • Base (6)
    • Spring (7)
    • Test (7)
    • JPA (23)
      • Spring Data JPA (9)
      • Base (14)
    • AWS (10)
    • DevOps (8)
      • Monitoring (2)
    • Database (10)
    • Algorithm (9)
    • Project (1)
    • Git (1)
    • 생각 정리 (4)
    • IDE (3)
      • eclipse (1)
      • Intellij (2)

블로그 메뉴

  • 🌈 GIthub
  • 🌎 LinkedIn
  • 📝 Notion
  • 🧑🏻‍💻 Resume

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
글쓰기 관리자
KAispread
JPA - JPQL 중급 #1 (경로 표현식)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.