플러시(flush)
- 영속성 컨텍스트의 변경 내용을 DB에 반영하는 것
- 커밋 될 때 실행됨
- 영속성 컨텍스트의 변경 사항과 DB를 일치시키기 위해 쿼리를 날리는 과정
- 변경 감지
- 수정된 엔티티를 쓰기지연 SQL 저장소에 등록
- 쓰기지연 SQL 저장소의 쿼리를 DB에 전송 (등록, 수정, 삭제 쿼리)
영속성 컨텍스트를 플러시 하는 방법
- emtityManager.flush() → 직접 호출하는 방법, 거의 사용하지 않는다.
- 트랜잭션 커밋 → 플러시 자동호출
- JPQL 쿼리 실행 → 플러시 자동호출
오류 방지를 위해 무조건 flush 실행
- flush를 실행하면 1차 캐시가 지워지는가?
- 1차캐시는 유지된다.
- 영속성 컨텍스트 쓰기지연 SQL 저장소에 있는 쿼리들을 DB에 반영하는 과정이다.
- 영속성 컨텍스트 쓰기지연 SQL 저장소에 있는 쿼리들을 DB에 반영하는 과정이다.
- 1차캐시는 유지된다.
플러시 모드 옵션
- entityManager.setFlushMode(FlushModeType. {…} )
- AUTO
- 기본값, 커밋이나 쿼리 실행 시 플러시 (권장)
- COMMIT
- 커밋할 때만 플러시. 쿼리 실행시에는 플러시하지 않는다.
플러시 정리
- 영속성 컨텍스트를 비우는 것이 아니다.
- 영속성 컨텍스트의 변경내용을 DB에 동기화 한다.
- 트랜잭션이라는 작업 단위가 중요하다. 커밋 직전에만 동기화 하면 된다.
https://www.inflearn.com/course/ORM-JPA-Basic/dashboard
자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의
JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com
'[Spring] > JPA 프로그래밍 - 기본편' 카테고리의 다른 글
객체와 테이블 매핑 (0) | 2023.04.11 |
---|---|
준영속 상태 (0) | 2023.04.10 |
영속성 컨텍스트 2 (0) | 2023.04.08 |
영속성 컨텍스트 1 (0) | 2023.04.07 |
Hello JPA - 애플리케이션 개발 (0) | 2023.03.28 |