본문 바로가기

Jpa

벌크 연산

벌크 연산

● 쿼리 한 번으로 여러 테이블 로우 변경(엔티티)

● executeUpdate()의 결과는 영향받은 엔티티의 수 반환

 UPDATE, DELETE 지원

● INSERT(insert into .. select , 하이버네이트 지원)

 

벌크 연산 주의

● 벌크 연산은 영속성 컨텍스트를 무시하고 데이터베이스에 직접 쿼리하기때문에 아래와같이 주의하여 사용

 

1. 벌크 연산을 먼저 실행

2. 벌크 연산 수행 후 영속성 컨텍스트 초기화

 

1번 풀이 : 영속성 컨텍스트에 아무것도 들어있지 않은상태에서 벌크연산을 수행한 뒤, 조회 (영속성컨텍스트를 초기화 하는시점에 벌크연산을 수행한 뒤여야함)

2번 풀이 : 영속성 컨텍스트에 조회한 값이 있는상태에서 영속성 컨텍스트를 초기화하지 않고 디비에 조회한다고 하여도 영속성 컨텍스트의 값이 갱신되지않음.

하여 벌크 연산을 실행한 후 em.clear() 즉 영속성 컨텍스트를 초기화해줘야함.

 

 

 

출처 - https://www.inflearn.com/course/ORM-JPA-Basic

'Jpa' 카테고리의 다른 글

spring data jpa 에서 페이징과 정렬  (0) 2024.07.17
SpirngDataJpa - Auditing  (0) 2024.07.17
Named 쿼리  (0) 2024.07.12
JPQL - 엔티티 직접사용  (0) 2024.07.12
페치 조인(fetch join)  (0) 2024.07.12