// member repository
@Modifying(clearAutomatically = true)
@Query("update Member m set m.age = m.age + 1 where m.age >= :age")
int bulkAgePlus(@Param("age") int age);
- @Modifying : jpa에서 .excuteUpdate와 동일, update 쿼리는 @Modifying 필수
- 벌크성 쿼리 실행 후 영속성 컨텍스트 초기화: @Modifying(clearAutomatically = true) (기본값은 false ) 따로 flush, clear 안 해도 됨.
- 반환타입 : int
// test
@Test
public void bulkUpdate() throws Exception {
//given
memberRepository.save(new Member("member1", 10));
memberRepository.save(new Member("member2", 19));
memberRepository.save(new Member("member3", 20));
memberRepository.save(new Member("member4", 21));
memberRepository.save(new Member("member5", 40));
//when
int resultCount = memberRepository.bulkAgePlus(20);
//then
assertThat(resultCount).isEqualTo(3);
}
'Spring boot > 스프링 데이터 JPA' 카테고리의 다른 글
외래키 참조 쿼리 비교(findByMemberId, findByMember) (0) | 2022.09.12 |
---|---|
[spring boot] 페이징과 정렬 (0) | 2022.01.24 |
[spring boot] 반환 타입 (0) | 2022.01.21 |
[spring boot] @Query, 메서드 이름으로 생성, NamedQuery (0) | 2022.01.21 |