- 변경감지 (더티 체킹)
- 영속성 컨텍스트의 경우 모든 엔티티의 스냅샷(최초 로드 상태) 을 보유함
flush
호출시 영속성 컨텍스트는 각 엔티티의 현재 상태와 스냅샷 비교- → 변경된 내용을 탐색 ( 속성의 변경)
- SQL 생성
- 변경된 엔티티에 대해 SQL 생성
- 새로운 엔티티
persist
로 호출 추가된 경우
INSERT
문 수행
- 변경된 엔티티
- 속성 값의 변경
UPDATE
문 수행
- 삭제된 엔티티
remove
로 호출 추가된 경우
DELETE
문 수행
- 새로운 엔티티
- 고아 객체의 제거의 경우
orphanRemoval = true
- 컬렉션에서 제거된 엔티티에 대해
DELETE
문을 생성
- 변경된 엔티티에 대해 SQL 생성
- 캐시 동기화
- DB 실행 후 영속성 컨텍스트의 내부의 1차 캐시가 최신상태로 유지
FLUSH 자체가 트랜잭션을 COMMIT 하는 것은 아닙니다.
별도의 commit() 의 호출을 통해 트랜잭션의 커밋이 이루어집니다
flush 는
- 디비 동기화
- 커밋 전 DB에 영속성 컨텍스트의 상태를 반영할때
사요
Uploaded by N2T
'자바 > JPA' 카테고리의 다른 글
[JPA] 값 타입- 개요 (0) | 2023.11.06 |
---|---|
[JPA]고아 객체 (0) | 2023.11.04 |
[JPA]영속성 전이 :저장 (0) | 2023.11.04 |
JPA 복합 키 (0) | 2023.11.04 |
[JPA] 즉시 로딩과 조인 전략 (0) | 2023.11.04 |