Entity를 영구적으로 저장하는 공간 및 환경이라고 생각하면 된다. EM(Entity Manager)는 Entity를 저장하거나 조회하면 EM은 PC(Persistence Context)에 Entity를 보관하고 관리한다. PC는 EM을 생성할 때 하나 만들어진다. PC에 접근하고 관리하기 위해서는 EM을 통해야 한다.
Entity 객체를 생성한 후 아직 저장하지 않은 상태이다. 따라서, PC와 DB와는 전혀 관련이 없다.
Member member = new Member();
member.setId("sample1");
member.setUserName("test1");
EM을 통해서 Entity가 PC에 저장되어 관리되는 상태이다. 즉, 영속 상태는 PC에 의해 관리된다는 것을 의미한다.
Member member = new Member();
member.setId("sample1");
member.setUserName("test1");
// Entity 객체를 저장해 영속 상태로 만듦
em.persist(member);
PC가 관리하던 영속 상태의 Entity를 PC가 관리하지 않게 되는 상태이다.
em.detach()를 호출하면 준영속 상태가 된다. em.close(), em.clear()를 호출해 PC를 초기화해도 PC가 관리하던 영속 상태의 Entity는 준영속 상태가 된다.
Member member = new Member();
member.setId("sample1");
member.setUserName("test1");
// Entity 객체를 저장해 영속 상태로 만듦
em.persist(member);
// 영속 상태의 Entity를 준영속 상태로 만든다.
em.detach(member);
Entity를 PC와 DB에서 삭제한다.
Member member = new Member();
member.setId("sample1");
member.setUserName("test1");
// Entity 객체를 저장해 영속 상태로 만듦
em.persist(member);
// 영속 상태의 Entity를 준영속 상태로 만든다.
em.detach(member);
// Entity 객체를 삭제한다.
em.remove(member);
오늘은 영속성 컨텍스트가 무엇인지와 영속성 컨텍스트에 저장되고 관리되는 Entity의 생명주기에 대해 간단하게 알아보았다. 다음에는 영속성 컨텍스트의 특징과 Entity 조회, 등록, 수정, 삭제에 대해 자세히 알아보도록 하겠다.