벌크연산

**여러 건을 한 번에 수정하거나 삭제**하는 방법


벌크연산 특징

영속성 컨텍스트와 2차 캐시를 무시하고 **DB에 직접 쿼리문**을 날린다.

그렇기 때문에 **영속성 컨텍스트와 DB간의 차이**가 생길 수 있다.


벌크연산 예시

@Modifying(clearAutomatically = true)
@Query("UPDATE Test t SET t.title = :title where id > :startId")
int updateBulk(@Param("title") String title, @Param("startId") Long id);

clearAutomatically를 true로 설정하는 이유

영속성 컨텍스트와 DB간의 차이를 해결하기 위해 해당 **메소드를 호출한 후 영속성 컨텍스트를 초기화**해준다.

flushAutomatically는 해당 쿼리를 실행하기 전에 영속성 컨텍스트를 flush해준다.