인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

빨간고무장갑 싸이코 펭귄님의 프로필 이미지
빨간고무장갑 싸이코 펭귄

작성한 질문수

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

영속성 컨텍스트 2

변경감지 시 flush()

해결된 질문

작성

·

371

0

변경 감지 동작 시 트랜잭션 커밋 시점에 엔티티 매니저 내부에서 플러시가 호출된다고 하셨는데 이 때 발생하는 플러시와

쓰기 지연 시 호출되는 플러시는 같은 것이라고 봐도 되나요??

흐름으로보면 내부 flush가 호출되면서 엔티티와 스냅샷을 비교하는 거 같은데 헷갈리네요 ㅠㅠ

답변 1

2

안녕하세요. 에러나면짖는개님, 공식 서포터즈 David입니다.

.

flush는 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것입니다.


트랜잭션 커밋시 내부적으로 flush() 호출

1. 엔티티와 스냅샷 비교 후 변경된 것에 대한 SQL 생성

2. 생성된 SQL을 쓰기 지연 SQL 저장소에 등록

3. 쓰기 지연 SQL 저장소에 등록된 쿼리를 DB로 전송

 

1-2번 항목은 3번을 위해 필요한 과정이고요.

변경 내용을 DB에 반영하는 것만 놓고 보면 3번을 flush라고 볼 수 있습니다.

그리고 그 과정에서 필요한 것들이 1-2번입니다.

.
감사합니다.

빨간고무장갑 싸이코 펭귄님의 프로필 이미지
빨간고무장갑 싸이코 펭귄

작성한 질문수

질문하기