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

신재원·2023년 1월 23일
0

JPA 기본

목록 보기
4/31

플러시 발생

플러시란?

  • 변경 감지 (더티체킹)
  • 수정된 Entity 쓰기지연 SQL 저장소에 등록
  • 쓰기 지연 SQL, 저장소의 쿼리를 데이터 베이스에 전송 (등록, 수정, 삭제 쿼리)
  • 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화 하면된다.

!! em.commit 전에 쿼리문을 미리 보고 싶을때 사용

  • 1차 캐시가 지워지는게 아님
  • Commit 전에 DB에 날라간다.

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

    1. em.flush() - 직접호출 (잘 사용 X, 하는방법은 알고있어야함)
    1. 트랜잭션 커밋 - 플러시 자동 호출
    1. JPQL 쿼리 실행 - 플러시 자동 호출

준영속 상태

준영속 상태란 ?

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

준영속 상태로 만드는 방법

  • em.detach (entity)
    • 특정 Entity만 준영속 상태로 전환
  • em.clear ()
    • 영속성 컨텍스트를 완전히 초기화
  • em.close ()
    • 영속성 컨텍스트를 종료

준영속 -> 영속 상태로 가는경우

  1. em.persist()를 하는경우
  2. em.find()를 실행후, 1차 캐시에 없어서 DB조회후 1차캐시에 저장되는경우

0개의 댓글