영속성 컨텍스트(Persistence Context)
- 논리적인 개념으로서,
Entity Manager
를 생성할 때 만들어진다.
Entity
를 영구히 저장하는 환경을 말한다.
Entity Manager
를 통해서만 접근이 가능하다.
Entity Manager
는 영속성 컨텍스트에 Entity
를 관리한다.
em.persist()
는 DB에 Entity를 저장하는 것이 아니라
영속성 컨텍스트에 저장(영속화) 시키는 것이다.
엔티티 생명주기(Entity Life-cycle)
1. 비영속(new/transient)
- 영속성 컨텍스트와 관련이 없는 상태
Entity
객체가 만들어진 직후의 상태
2. 영속(managed)
Entity Manager
를 통해서 Entity
를 영속성 컨텍스트에 저장한 상태
- 영속성 컨텍스트에 의해서 관리되는 상태이다.
persist()
처럼 새로 Entity
객체를 저장하는 경우
JPQL
or em.find()
처럼 조회하여 DB에서 가져오는 경우
3. 준영속(detached) :
- 영속 상태에서 관리하지 않으면 준영속 상태가 된다.
em.detach()
는 특정 Entity
를 준영속 상태로 만든다.
em.close()
는 영속 컨텍스트를 닫고, Entity
들을 준영속 상태로 만듦
em.clear()
는 영속 컨텍스트를 초기화한다. Entity
들을 준영속 상태로 만듦
4. 삭제(removed) :
- 엔티티 객체를 영속성 컨텍스트와 DB에서 삭제한다.