벌크성 수정 쿼리는 모든 지원의 연봉을 10%인상 하라는 것 처럼 한번에 모든 데이터를 관리할 때 사용한다.
- 순수 JPA
public int bulkAgePlus(int age){
int resultCount = em.createQuery(
"update Member m set m.age = m.age + 1" +
" where m.age >= :age")
.setParameter("age", age)
.executeUpdate();
return resultCount;
}
이 조건을 만족하는 데이터들은 모두 update한다.
- 스프링 데이터 JPA
@Modifying
@Query("update Member m set m.age = m.age + 1 where m.age >= :age")
int bulkAgePlus(@Param("age") int age);
- 벌크성 수정, 삭제 쿼리는 @Modifying 어노테이션을 사용해야 한다.
- 벌크성 쿼리를 실행하고 나서 영속성 컨텍스트 초기화 : @Modifying(clearAutomatically = true)
이 옵션 없이 findById로 다시 조회하면 영속성 컨텍스트 과거 값이 남아서 문제가 될 수 있다. 이 상태에서 다시 조회해야 하면 꼭 영속성 컨텍스트를 초기화 해야 한다.
실전! 스프링 데이터 JPA - 인프런 | 강의
스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다.
www.inflearn.com
'BackEnd > 스프링 데이터 JPA' 카테고리의 다른 글
확장 기능 (0) | 2023.01.23 |
---|---|
@EntityGraph, JPA Hint @ Lock (0) | 2023.01.21 |
JPA 페이징 처리 (0) | 2023.01.14 |
쿼리 메소드 기능 (0) | 2023.01.14 |
공통 인터페이스 기능 (0) | 2023.01.12 |