엔티티의 생명주기
비영속 (new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태
영속 (managed) : 영속성 컨텍스트에 저장된 상태
준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
삭제 (removed) : 삭제된 상태
준영속(detached)
- 준영속 상태의 엔티티는 영속성 컨텍스트가 제공하는 기능을 사용할 수 없다.
- 영속 상태의 엔티티를 준영속 상태로 만드는 방법
- entitymanager.detach(entity) : 특정 엔티티만 준영속 상태로 전환
- entitymanager.clear() : 영속성 컨텍스트를 완전히 초기화
- entitymanager.close() : 영속성 컨텍스트를 종료
준영속 상태의 특징
- 거의 비영속 상태에 가깝다.
- 식별자 값을 가지고 있다
=> 비영속 상태는 식별자 값이 없을 수도 있지만 준영속 상태는 이미 한 번 영속 상태였으므로 반드시 식별자 값을 가지고 있다.
- 지연 로딩을 할 수 없다
준영속 상태의 엔티티를 다시 영속 상태로 변경
- merge() 메소드는 준영속 상태의 엔티티를 바당서 그 정보로 새로운 영속 상태의 엔티티를 반환한다.