JPQL Type Query & Sub Query

2023. 4. 16. 00:58·📦 Database/JPQL
목차
  1. 💡 TypeQuery & Query
  2. 💡 JPA Sub Query
  3. JPA 서브 쿼리의 한계
  4. 지원 함수

💡 TypeQuery & Query

  • TypeQuery
    • 반환 타입이 명확할 때 사용
  • Query
    • 반환 타입이 명확하지 않을 때 사용
// Member 타입, 명확한 반환 타입
TypedQuery<Member> query =
    em.createQuery("SELECT m FROM member m", Member.class);

// String, int 2가지의 명확하지 않은 반환 타입
Query query = 
    em.createQuery("SELECT m.username, m.age from Member m");

💡 JPA Sub Query

쿼리 안에 서브 쿼리 작성

JPA 서브 쿼리의 한계

  • JPA는 WHERE, HAVING 에서만 서브 쿼리 사용 가능
  • SELECT도 가능 (Hibernate에서 지원)
  • FROM의 서브 쿼리는 현재 JPQL에서 불가능
    • JOIN으로 풀 수 있으면 풀어서 해결한다.

지원 함수

  • [NOT] EXISTS : 서브쿼리에 결과가 존재하면 TRUE
    • {ALL | ANY | SOME} : 서브쿼리
    • ALL 모두 만족하면 TRUE
    • ANY, SOME : 같은의미, 조건을 하나라도 만족하면 TRUE
  • [NOT] IN : 서브쿼리의 결과 중 하나라도 같은 것이 있으면 TRUE

서브쿼리 예시

  • 팀 A소속인 회원
select m from Member m where exists (select t from m.team t where t.name = '팀A')
  • 전체 상품 각각의 재고보다 주문량이 많은 주문들
select o from Order o where o.order Amount > ALL (select p.stockAmount from Product p)
  • 어떤 팀이든 팀에 소속된 회원
select m from Member m where m.team = ANY (select t from Team t)
저작자표시 (새창열림)

'📦 Database > JPQL' 카테고리의 다른 글

JQPL 다형성 쿼리 & 결과 조회 API  (0) 2023.04.16
JPQL Named Query & Parameter Binding  (0) 2023.04.16
JPQL Paging API  (0) 2023.04.16
JPQL Projection  (0) 2023.04.16
JPQL Basic  (0) 2023.04.16
  1. 💡 TypeQuery & Query
  2. 💡 JPA Sub Query
  3. JPA 서브 쿼리의 한계
  4. 지원 함수
'📦 Database/JPQL' 카테고리의 다른 글
  • JPQL Named Query & Parameter Binding
  • JPQL Paging API
  • JPQL Projection
  • JPQL Basic
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      Lock #Thread #Concurrency
      React #Markdown
      GStreamer #Pipeline
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    JPQL Type Query & Sub Query
    상단으로

    티스토리툴바

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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