• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

jpql update 문 관련 질문

20.12.10 04:58 작성 조회수 132

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

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

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

감사합니다.