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

WOOKI님의 프로필 이미지
WOOKI

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

준영속 상태

준영속 상태로 만들기

해결된 질문

작성

·

142

·

수정됨

0

[질문 템플릿]
1. 예
2. 예
3. 예

[질문 내용]

Member member = em.find(Member.class, 150L); 

member.setName("AAAAA"); 

em.detach(member);

tx.commit();

이 코드에서 setName에서 영속성 컨텍스트에 있는 member에 수정이 발생했고, 이를 스냅샷과 비교하여 dirty checking을 합니다. UPDATE 쿼리는 쓰기 지연 SQL 저장소에 저장됩니다.

위 과정이 모두 끝난 이후에 detach를 하더라도 UPDATE 쿼리는 쓰기 지연 SQL 저장소에 있을텐데, UPDATE 쿼리가 나가지 않는 이유는 flush할 때 영속성 컨텍스트에서 관리하는 엔티티가 아닌데 생성된 쿼리는 거르고 DB로 날리는 메커니즘으로 작동하는 건가요?

 

답변 1

1

안녕하세요. WOOKI님, 공식 서포터즈 코즈위버입니다.

detach() 를 하여 해당 엔티티를 영속성 컨텍스트에서 제거할 때, 관련 스냅샷, 쿼리 등을 모두 삭제합니다.

그래서 업데이트 쿼리가 발생하지 않습니다. 🙂

감사합니다.

WOOKI님의 프로필 이미지
WOOKI

작성한 질문수

질문하기