728x90
@Commit
@Test
public void bulkUpdate() throws Exception{
//member1=10->비회원
//member2=20->비회원
//member3=30->유지
//member4=40->유지
long count = queryFactory
.update(member)
.set(member.username, "비회원")
.where(member.age.lt(28))
.execute();
//DB에서 꺼내온 데이터보다 영속성컨텍스트가 우선권을가짐
//벌크 연산후 flush와 clear을 해줘라
em.flush();
em.clear();
List<Member> result = queryFactory
.selectFrom(member)
.fetch();
for (Member member1 : result) {
System.out.println("member1:"+member1);
}
}
영속성 컨텍스트는 엔티티 객체의 일관성을 보장하기 때문입니다.
쉽게 이야기해서 같은 영속성 컨텍스트에서 한번 저장하거나 조회하게 되면, 항상 같은 엔티티 객체인것이 보장됩니다.
즉 , 벌크연산 후 em.flush와 em.clear을 해주어서. DB에 데이터를 반영하고, 영속성 컨텍스트를 지웁니다.
728x90
'QueryDsl' 카테고리의 다른 글
JPQL 과 QueryDsl (0) | 2023.03.20 |
---|---|
Querydsl join문 기본문법 (0) | 2023.01.24 |
Query dsl 설정 및 테스트 (0) | 2023.01.13 |