728x90
수정, 삭제 벌크 연산
- 벌크 연산 사용 후에는 영속성 컨텍스트를 초기화 시켜주는 게 좋다.
- 설명은 아래 주석 참고
쿼리 한번으로 대량 데이터 수정 가능
@Test
public void bulkUpdate() {
/**
* member1 = 10 -> DB member1
* member2 = 20 -> DB member2
* member3 = 30 -> DB member3
* member4 = 40 -> DB member4
* */
long count = queryFactory
.update(member)
.set(member.username, "비회원")
.where(member.age.lt(28))
.execute();
/**
* member1 = 10 -> DB 비회원
* member2 = 20 -> DB 비회원
* member3 = 30 -> DB member3
* member4 = 40 -> DB member4
* 그러나 영속성 컨텍스트에는 member1, member2가 남아있기때문에
* 영속성 컨텍스트가 우선이다.
* 이걸 방지하기 위해서는 항상 초기화를 해줘야 한다.
* */
em.flush();
em.clear();
}
기존 숫자에 1 더하기
long count2 = queryFactory
.update(member)
.set(member.age, member.age.add(1))
.execute();
곱하기: multiply(x)
update member
set age = age + 1
쿼리 한번으로 대량 데이터 삭제
long count = queryFactory
.delete(member)
.where(member.age.gt(18))
.execute();
728x90
'💻dev > 🌱Java+Spring' 카테고리의 다른 글
Java | 엔티티를 조회하는 가장 안전한 방법, Optional (0) | 2023.08.01 |
---|---|
Querydsl | 동적 쿼리와 성능 최적화 조회 - Builder, Where절 파라미터 (0) | 2023.05.17 |
Querydsl | 동적 쿼리 - BooleanBuilder, Where 다중 파라미터 (0) | 2023.05.16 |
Querydsl | 결과 반환: 프로젝션, DTO, @QueryProjection (0) | 2023.05.16 |
Querydsl | 쿼리dsl의 기본 문법(설명 추가 예정) (0) | 2023.05.16 |