dirty checking1 [querydsl] batch 성 거래 처리하기 프로그램을 짜다보면 배치작업처럼 다량의 데이터가 업데이트 되거나 삭제되야하는 경우가 있다. 그런데 querydsl로 update 쿼리를 날리면 db의 상태와 영속성 컨택스트의 상태가 다른것을 확인할 수 있다. 영속성 컨택스트의 데이터는 그대로고 db만 값이 변경된다. 영속성 컨택스트의 1차 캐시와 동기화가 안되었기 때문이다. (JPA에서는 이를 Dirty Checking) 이라고 한다. 그래서 혹시나 내부에서 로직이 update이외에 다른게 있다면 꼭 영속성 컨택스트를 초기화 하는 과정을 넣어주는게 좋다. long updateCnt = queryFactory .update(member) .set(member.userName, "babo") .set(member.age, member.age.add(1)) .. 2021. 7. 8. 이전 1 다음