인프런 커뮤니티 질문&답변

김진현님의 프로필 이미지
김진현

작성한 질문수

실전! 스프링 데이터 JPA

jpql update 문 관련 질문

작성

·

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의 데이터 자제를 바로 변경하는 것입니다.

따라서 영속성 컨텍스트가 변화를 인지하지 못합니다.

그래서 벌크연산은 항상 주의해서 사용해야 합니다.

감사합니다.

김진현님의 프로필 이미지
김진현

작성한 질문수

질문하기