@Test // member.age가 28보다 적은 member.username을 "비회원"으로 update
public void bulkUpdate() throws Exception{
// member1 = 10 -> 비회원
// member2 = 20 -> 비회원
// member3 = 30 -> 유지
// member4 = 40 -> 유지
long count = queryFactory
.update(member)
.set(member.username, "비회원") //조건을 만족하는 member의 username이 "비회원"
.where(member.age.lt(28))
.execute();
// 안 해주면 영속성 컨텍스트에서 데이터 가져와서 업데이트된 DB의 값을 가져오지 못함
// em.flush();
// em.clear();
List<Member> result = queryFactory
.selectFrom(member)
.fetch();
for (Member member1 : result) {
System.out.println("member1 = " + member1);
}
}
@Test //모든 member.age에 1을 더해줌
public void bulkAdd() throws Exception{
long count = queryFactory
.update(member)
.set(member.age, member.age.add(1))
.execute();
}
@Test //member.age가 25 이상인 member를 제거함
public void bulkDelete() throws Exception{
long count = queryFactory
.delete(member)
.where(member.age.gt(25))
.execute();
List<Member> result = queryFactory
.selectFrom(member)
.fetch();
for (Member member1 : result) {
System.out.println("member1 = " + member1);
}
}
벌크 연산이란 여러개의 row를 한꺼번에 고치는 것을 의미한다. 이는 update( ), delete( ) 메서드와 excute( ) 메서드로 수행한다.
'Spring > Querydsl' 카테고리의 다른 글
Querydsl- 동적쿼리 (0) | 2023.08.05 |
---|---|
Querydsl- 프로젝션 (0) | 2023.08.04 |
Querydsl- 조인 (0) | 2023.07.27 |
Querydsl- 집합 (0) | 2023.07.26 |
Querydsl- 정렬과 페이징 (0) | 2023.07.25 |