[JPA 기본]플러시 & 준영속 상태

EB·2022년 6월 16일

📌 플러시

  • 영속성 컨텍스트의 변경내용을 데이터베이스에 반영
  • 영속성 컨텍스트를 비우지 않는다.
  • 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화한다.
  • 트랜잭션이라는 작업 단위가 중요하다. -> 커밋 직전에만 동기화 하면 된다.

📌 플러시 발생

  • 변경 감지
  • 수정된 엔티티 쓰기 지연 SQL 저장소에 등록
  • 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 쿼리)

📌 플러시 모드 옵션

  • FlushModeType.AUTO : 커밋이나 쿼리를 실행할 때 플러시 (기본값)
  • FlushModeType.COMMIT : 커밋할 때만 플러시

📌 영속성 컨텍스트를 플러시하는 방법

  • em.flush() : 직접 호출
  • 트랜잭션 커밋 - 플러시 자동 호출

📌 준영속 상태

  • 영속에서 준영속으로 갈 수 있는 상태
  • 영속 상태의 엔티티가 영속성 컨텍스트에서 분리 (detach)

📌 준영속 상태로 만드는법

  • em.detach(entity) : 특정 엔티티만 준영속 상태로 전환 -> JPA가 더이상 관리X
  • em.clear() : 영속성 컨텍스트를 완전히 초기화 -> 1차캐시를 지움
  • em.close() : 영속성 컨텍스트를 종료
profile
👩‍💻✨junior developer

0개의 댓글