📌 플러시
- 영속성 컨텍스트의 변경내용을 데이터베이스에 반영
- 영속성 컨텍스트를 비우지 않는다.
- 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화한다.
- 트랜잭션이라는 작업 단위가 중요하다. -> 커밋 직전에만 동기화 하면 된다.
📌 플러시 발생
- 변경 감지
- 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리)
📌 플러시 모드 옵션
- FlushModeType.AUTO : 커밋이나 쿼리를 실행할 때 플러시 (기본값)
- FlushModeType.COMMIT : 커밋할 때만 플러시
📌 영속성 컨텍스트를 플러시하는 방법
- em.flush() : 직접 호출
- 트랜잭션 커밋 - 플러시 자동 호출
📌 준영속 상태
- 영속에서 준영속으로 갈 수 있는 상태
- 영속 상태의 엔티티가 영속성 컨텍스트에서 분리 (detach)
📌 준영속 상태로 만드는법
- em.detach(entity) : 특정 엔티티만 준영속 상태로 전환 -> JPA가 더이상 관리X
- em.clear() : 영속성 컨텍스트를 완전히 초기화 -> 1차캐시를 지움
- em.close() : 영속성 컨텍스트를 종료