엔티티는 비영속, 영속, 준영속, 삭제의 4가지 상태를 갖는다.
비영속 | 영속 | 준영속 | 삭제 |
---|---|---|---|
영속성 컨텍스트와 관련 X | 영속성 컨텍스트에 저장된 상태 | 영속성 컨텍스트에 저장되었다가 분리된 상태 | 삭제된 상태 |
위 표와 같은 4가지 상태를 갖는다.
[영속성 컨텍스트]
영속성 컨텍스트란, DB와 어플리케이션 사이에서 객체를 저장하여 엔티티를 보관하고 관리할 수 있도록 가상의 DB 역할을 한다. 영속성 컨텍스트를 관리하고, 영속성 컨텍스트에 접근하는 Entity Manager가 생성될 때 한 번 생성된다.
엔티티 객체를 생성하였지만 영속성 컨텍스트와 영속성 컨텍스를 관리하고 접근하는 EntityManager
와는 아무런 관련이 없는 상태이다.
위의 생명 주기 그림에서 New
에 해당한다.
EntityManager
를 통해 엔티티 객체를 영속성 컨텍스트에 저장한 상태를 말한다. 영속성 컨텍스트에 의해 관리되는 상태로 Managed
에 해당한다.
em.persist(entityObject);
영속성 컨텍스트에 저장되었다가 더이상 관리되지 않는 상태로, 영속성 컨텍스트로부터 분리된다.
em.detach(entityObject);
em.clear();
em.close();
준영속 상태는 영속성 컨텍스트에서 구별될 수 있는 식별자를 갖고 있지만, EntityManager
를 통한 어떤 작업도 수행될 수 없다.
영속성 컨텍스트로부터 완전히 삭제된 상태이다.
em.remove(entityObject);