1. 플러시
- 영속성 컨텍스트의 변경내용을 DB에 반영
- 플러시 발생
1. 변경 감지
2. 수정된 엔티티를 '쓰기 지연 SQL 저장소'에 등록
3. '쓰기 지연 SQL 저장소'의 쿼리를 DB에 전송
- 영속성 컨텍스트를 플러시하는 방법
1. em.flush()
- 직접 호출(잘 안씀)
2. 트랜잭션 커밋 - 플러시 자동 호출
3. JPQL 쿼리 실행 - 플러시 자동 호출
- 플러시를 해도 1차 캐시 안 지워짐, 영속성 컨택스트를 비우지 않음
- 플러시 모드 옵션 -
EntityManager.setFlushMode(FlushModeType.COMMIT)
1. FlushModeType.AUTO - 커밋이나 쿼리를 실행할 때 플러시(기본값)
2. FlushModeType.COMMIT - 커밋할 때만 플러시
2. 준영속 상태
- 영속 상태의 엔티티가 영속성 컨텍스트에 분리되는 것
- 방법
1. em.detach(entity)
- 특정 엔티티만 준영속 상태로 전환
2. em.clear()
- 영속성 컨텍스트를 완전히 초기화
3. em.close()
- 영속성 컨텍스트를 종료
이 글은 김영한님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편'을 수강하고 정리한 내용입니다.