[스프링] JPA와 벌크 연산
이 게시물에서는 JPA(Java Persistence API)에서 벌크 연산을 사용하는 방법에 대해 알아보겠습니다.
JPA 벌크 연산이란?
JPA 벌크 연산은 대량의 엔티티를 한 번에 처리하는 방법으로, 한 번의 쿼리로 여러 엔티티를 변경할 수 있습니다. 이를 통해 데이터베이스에서 효율적인 작업을 수행할 수 있습니다.
JPA 벌크 연산 사용하기
JPA는 다음과 같이 벌크 연산을 지원합니다.
@Modifying
@Query("update Entity e set e.status = :newStatus where e.status = :oldStatus")
int updateStatus(@Param("oldStatus") String oldStatus, @Param("newStatus") String newStatus);
위의 예시는 Entity
엔티티에 대한 상태를 변경하는 쿼리입니다. @Modifying
어노테이션은 쿼리가 UPDATE 혹은 DELETE 쿼리임을 나타냅니다.
주의사항
- 벌크 연산은 영속성 컨텍스트에 있는 엔티티의 상태를 무시하고 데이터베이스에 바로 적용되므로 주의해야 합니다.
- 벌크 연산은 영속성 컨텍스트를 무시하므로 벌크 연산 직후
EntityManager
의clear()
메서드를 호출하여 영속성 컨텍스트를 초기화해야 합니다.
JPA 벌크 연산은 대량의 데이터를 효율적으로 처리할 수 있는 매우 유용한 기능입니다. 그러나 사용 시 주의사항을 잘 숙지하여야 합니다.