Persistence Context와 Entity 생명주기

Charm dong·2022년 1월 7일
0

JPA

목록 보기
3/4

1. 영속성 컨텍스트 (Persistence Context)

Entity를 영구적으로 저장하는 공간 및 환경이라고 생각하면 된다. EM(Entity Manager)는 Entity를 저장하거나 조회하면 EM은 PC(Persistence Context)에 Entity를 보관하고 관리한다. PC는 EM을 생성할 때 하나 만들어진다. PC에 접근하고 관리하기 위해서는 EM을 통해야 한다.


2. Entity의 생명주기

1. 비영속

Entity 객체를 생성한 후 아직 저장하지 않은 상태이다. 따라서, PC와 DB와는 전혀 관련이 없다.

Member member = new Member();
member.setId("sample1");
member.setUserName("test1");

2. 영속

EM을 통해서 Entity가 PC에 저장되어 관리되는 상태이다. 즉, 영속 상태는 PC에 의해 관리된다는 것을 의미한다.

Member member = new Member();
member.setId("sample1");
member.setUserName("test1");

// Entity 객체를 저장해 영속 상태로 만듦
em.persist(member);

3. 준영속

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);

4. 삭제

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 조회, 등록, 수정, 삭제에 대해 자세히 알아보도록 하겠다.

  • 참고 문헌: 자바 ORM 표준 JPA 프로그래밍 (김영한 지음)
profile
자유롭고 싶은 개발자

0개의 댓글