객체지향 쿼리 언어 - 벌크 연산

도윤·2024년 3월 23일
post-thumbnail

벌크연산

  • 벌크연산 : 일반적으로 잘 알고있는 SQL 의 UPDATE, DELETE
  • 재고가 10개 미만인 모든 상품의 가격을 10% 상승하려면?
  • JPA 변경 감지 기능으로 실행하려면 너무 많은 SQL 실행
    • 재고가 10개 미만인 상품을 리스트로 조회
    • 상품 엔티티의 가격을 10% 증가
    • 트랜잭션 커밋 시점에 변경감지 동작
  • 변경된 데이터가 100건이라면 100번의 UPDATE SQL 이 실행

예제

  • 쿼리 한번으로 여러 테이블 로우를 변경(엔티티)
  • excuteUpdate() 의 결과는 영향받은 엔티티 수 반환
  • UPDATE, DELETE 로 지원
  • INSERT
  • 모든 회원의 나이를 20살로 변경

벌크 연산 주의점

  • 벌크 연산은 영속성 컨텍스트를 무시하고 데이터베이스에 직접 쿼리한다
  • 해결방법
    • 벌크 연산을 먼저 실행
    • 벌크 연산 수행 후 영속성 컨텍스트 초기화


출처 : 자바 ORM 표준 JPA 프로그래밍 - 기본편

profile
기록은 기억을 이긴다⭐

0개의 댓글