JQPL 벌크 연산 & 엔티티 직접 사용

2023. 4. 16. 01:11·📦 Database/JPQL
목차
  1. 💡 벌크 연산
  2. 주의점
  3. 💡 엔티티 직접 사용

💡 벌크 연산

  • PK를 특정한 엔티티의 Update, Delete를 제외한 모든 Update, Delete 쿼리이다.
  • 쿼리 한 번으로 여러 테이블의 Row를 변경한다. (Entity)
  • executeUpdate()의 결과는 영향을 받은 Entity의 수를 반환한다.
  • Insert 문을 Hibernate에서 지원한다. (insert into .. select)
// 재고가 10개 미만인 Product의 Price를 쿼리 한 번으로 10% 인상
String qlString = 
    "update Product p " +
    "set p.price = p.price * 1.1 " +
    "where p.stockAmount < :stockAmount";

int resultCount = em.createQuery(qlString)
    .setParameter("stockAmount", 10)
    .executeUpdate();

주의점

벌크연산은 영속성 컨텍스트를 무시하고 DB에 직접 쿼리한다. (데이터 정합성)


2가지 해결 방법

  • 벌크 연산을 먼저 실행
  • 벌크 연산 실행 후 영속성 컨텍스트 초기화 (em.clear())

💡 엔티티 직접 사용

JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다.

엔티티를 직접 사용하거나 파라미터로 넘겨도 동일하게 PK로 조회한다.

# 엔티티의 아이디를 사용
select count(m.id) from Member m

# 엔티티를 직접 사용
select count(m) from Member m

# 엔티티를 파라미터로 전달
select m from Member m where m = :member

# 식별자를 직접 전달
select m from Member m where m.id = :memberId
저작자표시 (새창열림)

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

JPQL Join & Fetch Join  (0) 2023.04.16
JPQL 경로 표현식  (0) 2023.04.16
JQPL 다형성 쿼리 & 결과 조회 API  (0) 2023.04.16
JPQL Named Query & Parameter Binding  (0) 2023.04.16
JPQL Paging API  (0) 2023.04.16
  1. 💡 벌크 연산
  2. 주의점
  3. 💡 엔티티 직접 사용
'📦 Database/JPQL' 카테고리의 다른 글
  • JPQL Join & Fetch Join
  • JPQL 경로 표현식
  • JQPL 다형성 쿼리 & 결과 조회 API
  • JPQL Named Query & Parameter Binding
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (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
    신건우
    JQPL 벌크 연산 & 엔티티 직접 사용
    상단으로

    티스토리툴바

    단축키

    내 블로그

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

    블로그 게시글

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

    모든 영역

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

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