• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

벌크 연산시 flush 호출 여부에 대해 궁금한 점이 있습니다.

20.02.03 23:45 작성 조회수 181

2

안녕하세요. 선생님 벌크연산 강의 중에 질문이 있습니다.

JPA 프로그래밍 책에서 JPQL 실행 시 플러시가 자동 호출되어서 영속성 컨텍스트에 있는 쿼리문이 db에 동기화 되는걸로 알고 있는데 벌크 연산은 update 쿼리이기 때문에 자동으로 플러시가 호출되지 않아서 강제로 플러시를 호출해줘야 되는건가요?   이 부분에 혼동이 있어서 질문드립니다.

답변 1

답변을 작성해보세요.

4

안녕하세요 a79007714님

혹시 강의 어디 부분인지 이야기 부탁드려요^^ (몇분인지 말씀해주시면 좋습니다^^!)

참고로 update도 JPQL이기 때문에 플러시가 호출은 됩니다.

그러니까 플러시가 호출된 다음에 update 벌크 쿼리가 실행되는 것이지요.

그런데 이 update 벌크 쿼리가 영속성 컨텍스트에 있는 엔티티는 무시하고 바로 데이터베이스에 있는 데이터에 영향을 줍니다.

그래서 update 벌크 연산이 실행되고 나면 데이터베이스에 있는 데이터와 영속성 컨텍스트의 데이터가 달라지게 됩니다^^!

최종민님의 프로필

최종민

2024.01.23

여기서 쿼리 수행전에 flush는 수행되도 clear는 수행되지 않아서 update 벌크 연산이 수행된 이후에 DB와 영속성 컨텍스트의 데이터가 달라지는게 맞나요?


안녕하세요. 최종민님

네 맞습니다. DB와 영속성 컨텍스트의 데이터가 달라질 수 있습니다.

감사합니다.