[JPA] 벌크 연산 (Batch)

JPA 벌크 연산을 통해 다량의 데이터를 효율적으로 업데이트하거나 삭제하는 방법을 설명합니다.

JPA 에서는 기본적으로 한 번에 하나의 데이터를 Update / Delete 하는 것을 원칙으로 한다. 만약 20개의 데이터를 변경시키고 싶다면, DB 에 20개의 쿼리가 호출되게 될 것이다.

이것을 막기 위해, JPA 에서는 벅크 연산을 지원한다. 

 

String sqlString = "update Product p " + 
                    "set p.price = p.price * 1.1 "+
                    "where p.stockAmount < :stockAmount";

int resultCount = em.createQuery(sqlString)
                    .setParameter("stockAmount", 10)
                    .executeUpdate();

// 벌크 연산의 경우, 영속성 컨텍스트에 반여시킬 수 없기 때문에,
// Entity Manager 를 clear() 시켜주는 것을 습관으로 하자
em.clear();

 


이것도 읽어보세요