250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데코레이터
- execute
- 즉시로딩
- 비관적락
- CHECK OPTION
- 다대일
- 백트래킹
- exclusive lock
- 힙
- 낙관적락
- querydsl
- eager
- 스프링 폼
- 다대다
- 유니크제약조건
- 스토어드 프로시저
- dfs
- 연결리스트
- FetchType
- shared lock
- 일대다
- SQL프로그래밍
- PS
- 연관관계
- BOJ
- 동적sql
- fetch
- 지연로딩
- JPQL
- 이진탐색
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
[Querydsl] 수정, 삭제 벌크 연산 본문
728x90
# 벌크 연산
- 쿼리 한 번으로 대량 데이터 수정
# 나이가 28 미만인 회원의 이름을 비회원으로 지정
@Test
@Commit
public void bulkUpdate(){
long count = queryFactory
.update(member)
.set(member.username, "비회원")
.where(member.age.lt(28))
.execute();
em.flush();
em.clear();
List<Member> result = queryFactory
.selectFrom(member)
.fetch();
for (Member member1 : result){
System.out.println("member1 = " + member1);
}
}
- 벌크 연산이 수행되는 순간 영속성 컨텍스트와 DB 는 일치하지 않는다.
- 영속성 컨텍스트에 있는 엔티티를 무시하고 실행되기 때문에, 배치 쿼리를 실행하고 나면 영속성 컨텍스트를 초기화하는 것이 안전하다
# 모든 회원의 나이를 1 더하라
/**
* 모든 회원의 나이를 1 더하라
*/
public void bulkAdd(){
long count = queryFactory
.update(member)
.set(member.age, member.age.add(1))
.execute();
}
- 곱하기는 multiply(x)
# 나이가 18 이상인 모든 회원을 삭제하라
public void bulkDelete(){
long count = queryFactory
.delete(member)
.where(member.age.goe(18))
.execute();
}
# 필수!!
em.flush();
em.clear();
'JPA' 카테고리의 다른 글
[Querydsl] 동적 쿼리, 성능 최적화 조회 - Builder 사용 + API 컨트롤러 (0) | 2024.04.20 |
---|---|
[Querydsl] SQL function 호출하기 (0) | 2024.04.20 |
[Querydsl] 동적 쿼리 2 - Where 다중 파라미터 사용 (0) | 2024.04.20 |
[Querydsl] 동적 쿼리 1 - BooleanBuilder 사용 (0) | 2024.04.20 |
[Querydsl] distinct (0) | 2024.04.19 |