본문 바로가기
Back-End/JPA

JPA) 준영속 상태

by 어렵다어려웡 2022. 3. 11.

영속성 컨텍스트가 관리하는 영속상태의 엔티티가 영속성 컨텍스트에서 분리된 것을 준영속 상태라고 한다.

 

따라서 준영속 상태의 엔티티는 영속성 컨텍스트의 기능을 사용할 수 없다.

영속상태의 엔티티를 준영속으로 만드는 방법은 3가지 이다.

  1. em.detech() 호출

 

em.detech() 를 호출하는 순간 부터 영속성 컨텍스트에 관리를 받지 못하고

1차 캐시 부터 쓰기지연 SQL 까지 해당 엔티티를 관리하기 위한 정보가 제거된다

 

영속상태 였다가 영속성 컨텍스트가 더이상 관리하지 않게된 상태를 준영속 상태라고한다.

이떄는 어떠한 영속성 컨텍스트의 기능이 실행되지 않는다. DB에 저장도 되지않음.

 

 

   2. em.clear()

em.detech가 하나의 엔티티를 준영속으로 만들었다면 em.clear() 는 영속성 컨텍스트를 초기화해서

모든 엔티티를 준영속으로 만든다.

 

 

   3. em.close()

 

 

준영속 상태의 특징

  1. 거의 비영속상태에 가깝다.

영속성컨텍스트가 관리하지 않기 때문에 어떠한 기능도 동작하지 않는다.

 

   2. 식별자 값을 가지고 있다.

비영속상태는 식별자 값이 없을수 있지만 준영속 상태는 한번 영속상태 였기 떄문에 식별자 값을 가지고 있다.

 

   3. 지연 로딩 불가

실제 객체 대신 프록시 객체를 로딩하고 해당 객체를 실제 사용시 영속성 컨텍스트에서 불러오는 방법인데, 준영속 상태는 더이상 관리를 받지않기 때문에 지연로딩시 예외가 발생한다.

'Back-End > JPA' 카테고리의 다른 글

JPA ) 연관관계 매핑  (0) 2022.03.11
JPA) 병합 merge  (0) 2022.03.11
JPA) Flush  (0) 2022.03.11
JPA) 변경 감지 (Dirty Check)  (0) 2022.03.11
JPA) 영속성 컨텍스트 개념 및 특징  (0) 2022.03.11