엔티티 생명 주기 구분
비영속(new/transient)
: 영속성 컨텍스트와 전혀 관계가 없는 상태영속(managed)
: 영속성 컨텍스트에 저장된 상태준영속(detached)
: 영속성 컨텍스트에 저장되었다가 분리된 상태삭제(removed)
: 삭제된 상태비영속
엔티티 객체를 생성했지만 아직 영속성 컨텍스트에 의해 관리되지 않는 상태
코드 예시
Member member = new Member();
영속
엔티티 메니저를 통해 엔티티를 영속성 컨텍스트에 저장한 상태
영속성 컨텍스트에 의해 관리된다는 뜻
코드 예시
Member member = new Member();
em.persist(member);
준영속
영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 더 이상 관리하지 않으면 준영속 상태가 됨
특정 엔티티를 준영속 상태로 만드려면 em.detach()
호출
준영속 상태의 특징
코드 예시
// 엔티티를 영속성 컨텍스트에서 분리해 준영속 상태로 만듦
em.detach(member);
// 영속성 컨텍스트를 비워도 관리되던 엔티티들은 준영속 상태가 됨
em.clear();
// 영속성 컨텍스트를 종료해도 관리되던 엔티티들은 준영속 상태가 됨
em.close();
삭제
엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제
코드 예시
em.remove(member);
flush
라고 함