바로 코드로 보자.
//수정
@Test
void bulkUpdate() {
//count는 영향을 받은 회원 수
long count = queryFactory.update(member)
.set(member.username, "비회원")
.where(member.age.lt(28)).execute();
//영속성 컨텍스트 비우기
em.flush();
em.clear();
}
//더하기
@Test
void bulkAdd() {
queryFactory.update(member)
.set(member.age, member.age.add(1))
.execute();
//영속성 컨텍스트 비우기
em.flush();
em.clear();
}
//삭제
@Test
void bulkDelete() {
queryFactory.delete(member)
.where(member.age.gt(18))
.execute();
//영속성 컨텍스트 비우기
em.flush();
em.clear();
}
모든 각각의 수정, 삭제 쿼리를 실핼한 뒤
em.flush()
em.clear()
로 영속성 컨텍스트를 비워주는 것을 알 수 있다. JPQL의 배치와 마찬가지로 영속성 컨텍스트에 있는 엔티티를 무시하고 실행되기 때문에 배치 쿼리를 실행하고 나면 영속성 컨텍스트를 초기화하는 것이 안전하다.
김영한님의 인프런 강의와 PDF를 바탕으로 정리하였습니다.
'JPA > Querydsl' 카테고리의 다른 글
Querydsl 11 - 순수 JPA 리포지토리와 Querydsl, 동적쿼리 Builder (0) | 2022.01.21 |
---|---|
Querydsl 10 - SQL function 호출하기 (0) | 2022.01.20 |
Querydsl 08 - 동적 쿼리 (0) | 2022.01.20 |
Querydsl 07 - 프로젝션과 결과반환 (0) | 2022.01.19 |
Querydsl 06 - Case문, 상수 문자 더하기 (0) | 2022.01.18 |