Back-end/JPA
자바 ORM 표준 JPA 벌크 연산
이안_ian
2023. 5. 30. 13:29
반응형
벌크 연산
- 쿼리 한 번으로 여러 테이블 로우 변경(엔티티)
- executeUpdate()의 결과는 영향받은 엔티티 수 반환
- update, delete 지원
- insert(insert into .. select, 하이버네이트 지원)
String qlString = "update Product p" +
"set p.price = p.price * 1.1 " +
"where p.stockAmount < :stockAmount";
int rsCnt = em.createQuery(qlString)
.setParameter("stockAmount", 10)
.executeUpdate();
int rsCnt = em.createQuery("update Member m set m.age = 20")
.executeUpdate();
벌크 연산 주의
벌크 연산은 영속성 컨텍스트를 무시하고 데이터베이스에 직접 쿼리 실행
- 벌크 연산을 먼저 실행
- 벌크 연산 수행 후 영속성 컨텍스트 초기화
//flush까지 된 상태
int rsCnt = em.createQuery("update Member m set m.age = 20")
.executeUpdate();
//영속성 컨텍스트 초기화
em.clear();
연관 포스팅: https://smujihoon.tistory.com/278
반응형