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

피레스님의 프로필 이미지
피레스

작성한 질문수

실전! Querydsl

수정, 삭제 벌크 연산

벌크 수정 연산후 flush clear

해결된 질문

작성

·

273

1

강의 수정,삭제 벌크연산 9분대 부분에 대한 질문입니다.

벌크 연산 수행후 영속성 컨텍스트를 flush해주고 clear해주는 부분에 있어서 질문입니다

db와 영속성 컨텍스트의 정보가 맞지 않기 때문에 벌크 연산 '수행 후' 영속성 컨텍스트의 정보를 clear 하는 것은 이해가 됩니다.

그런데, 영속성컨텍스트에는 벌크연산으로 수정되기 전의 정보가 남아있는데 이를 flush해주면 벌크연산으로 수정된 정보가 다시 바뀌어야하는 것 아닌가요?

다시 생각해보니까

jpa가 항상 엔티티를 관리하면서 엔티티가 변경되면 이를 쿼리 지연 저장소에다가 보관해놓고 이것들을 flush할때 날리는 것인데, 벌크 연산 수행후에는 엔티티 자체는 더티체킹으로 변경이 감지되지 않았으니까 쿼리 지연 저장소에 쿼리가 저장되지 않아서 그런게 이유인가 하는데 맞는 것인지요?

답변 2

3

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 피레스님^^

마지막에 생각하신 내용이 맞습니다^^!

1

변경 감지된 것이 없어서 쿼리 지연 저장소가 어차피 비어 있는 상태인데도 clear만 하지 않고 굳이 flush도 해야 하나요?

피레스님의 프로필 이미지
피레스

작성한 질문수

질문하기