작성
·
188
1
갑자기 궁금증이 생겨 질문드립니다. 벌크 연산은 member2에 age를 +1시켜줍니다.
이떄 db에 쿼리가 넘어가서 db상에 member2 age는 5가되고 영속성컨테스트안에 member2 age는 4가 그대로 유지됩니다.
이 상황에서 플러쉬를 하면 왜 변경감지가 일어나지 않나요?
Member member1=new Member("member1",2,null);
Member member2=new Member("member2",4,null);
memberJpaRepository.save(member1);
memberJpaRepository.save(member2);
int i = memberJpaRepository.bulkAgePlus(3);
em.flush();
답변 1
0
안녕하세요. 진현님
벌크 연산은 해당 엔티티 객체의 데이터를 바꾼게 아니라 DB의 데이터 자제를 바로 변경하는 것입니다.
따라서 영속성 컨텍스트가 변화를 인지하지 못합니다.
그래서 벌크연산은 항상 주의해서 사용해야 합니다.
감사합니다.