JPA - flush

iseon_u·2022년 7월 2일
0

JPA

목록 보기
4/6
post-thumbnail

플러시


  • 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영

플러시 발생

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

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

  • em.flush()
    • 직접 호출
  • 트랜잭션 커밋
    • 플러시 자동 호출
  • JPQL 쿼리 실행
    • 플러시 자동 호출

플러시 특징

  • 영속성 컨텍스트를 비우지 않는다.
  • 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
  • 트랜잭션이라는 작업 단위가 중요 → 커밋 직전에만 동기화 하면 된다.
  • 플러시 모드 옵션 (기본값)
    • em.setFlushMode(FlushModeType.COMMIT)

준영속 상태

  • 영속 → 준영속
  • 영속 상태의 엔티티가 영속성 컨텍스트에서 분리(detached)
  • 영속성 컨텍스트가 제공하는 기능을 사용 못한다.

준영속 상태로 만드는 방법

  • em.detach(entity)
    • 특정 엔티티만 준영속 상태로 전환
  • em.clear()
    • 영속성 컨텍스트를 완전히 초기화
  • em.close()
    • 영속성 컨텍스트를 종료
profile
🧑🏻‍💻 Hello World!

0개의 댓글