벌크연산
- 벌크연산 : 일반적으로 잘 알고있는 SQL 의 UPDATE, DELETE
- 재고가 10개 미만인 모든 상품의 가격을 10% 상승하려면?
- JPA 변경 감지 기능으로 실행하려면 너무 많은 SQL 실행
- 재고가 10개 미만인 상품을 리스트로 조회
- 상품 엔티티의 가격을 10% 증가
- 트랜잭션 커밋 시점에 변경감지 동작
- 변경된 데이터가 100건이라면 100번의 UPDATE SQL 이 실행
예제
- 쿼리 한번으로 여러 테이블 로우를 변경(엔티티)
- excuteUpdate() 의 결과는 영향받은 엔티티 수 반환
- UPDATE, DELETE 로 지원
- INSERT
- 모든 회원의 나이를 20살로 변경

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


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