본문 바로가기
Study/JPA

[JPA] 벌크연산

by 오늘만 사는 여자 2022. 3. 30.
728x90
반응형

벌크연산

  • insert, update, delete할때 단건이 아닌 다건으로 한번에 처리하는 쿼리
  • JPA에서 단건 UPDATE같은 경우에는 Dirty Checking을 통해서 수행

주의점

  • 벌크 연산 쿼리는 에ㅐㄴ티티 매니저가 영속성 컨텍스트에 변경된 내용을 업데이트 하지 않고 바로 데이터에 스스로 보내진다
  • 벌크연산 후에 실제 데이터베이스와 영속성 컨텍스트의 엔티티 정복 다를수 있다.
    • 벌크연산 후에는 flush()와 clear()를 해줘서 이후의 로직에 대해 다시 영속성 상태가 되도록 해야한다.

스프링 데이터 JPA 벌크연산

  • @Modifying
    • INSERT, UPDATE, DELETE에 모두 적용되며 없을 경우 SELECT로 인식하기 때문에 에러가 발생
  • 스프링 데이터 JPA에서는 flushAutomatically, crearAutomatically속성으로 flush()와 clear()를 자동으로 수행하게 할 수 있다.
@Modifying(flushAutomatically = true, clearAutomatically = true)
@Query("update Member m set m.age = m.age + 1 where m.age >= :age")
int bulkAgePlus(@Param("age") int age);

 

출처 : https://intrepidgeeks.com/tutorial/jpa-batch-operation

728x90
반응형

'Study > JPA' 카테고리의 다른 글

[JPA] @MappedSuperclass  (0) 2022.04.19
[DAO] DAO, DTO, Entity Class의 차이  (0) 2022.04.11
[JPA] Spring JPA CascadeType 종류  (0) 2022.03.28
[JPA] @JsonIgnore, @JsonManagedReference, @JsonBackReference  (0) 2022.03.26
[JPA] DTO, Domain(Entity)  (0) 2022.03.26

댓글