Index
- 영속성 컨텍스트란?
- 엔티티의 생명주기
영속성 컨텍스트란?
영속성 컨텍스트(Persistence context) 란 JPA를 이해하는데 가장 중요한 용어로서 이를 우리말로 해석하자면 '엔티티를 영구 저장하는 환경' 이라는 뜻으로 책에서는 이야기 한다.
em.persist(member); ( 지난 포스팅을 보면 해당 코드를 알수 있다. 간다한게 em은 EntityManager 객체이다.)
우리는 회원Entity(member)를 저장 한다라고 생각할 수 있는데 정확하게는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. 영속성 컨텍스트는 논리적인 개념으로 엔티티 매니저를 생성할 때 하나 만들어진다. 그리고 EntityManager를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다.
참고 : 여러 엔티티매니저가 같은 영속성 컨텍스트에 접근할 수도 있다고한다. 그러나 지금은 어려울 수 있으니 엔티티메니저 하나에 영속성 컨텍스트 하나가 만들어진다고 생각하면됨. 책에서는 11장... (지금은 3장) 에서 다룬다고 한다.
엔티티의 생명주기
비영속 : 영속성 컨텍스트와 전혀 관계가 없는 상태
영속 : 영속성 컨텍스트에 저장되고 관리되는 상태
준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태
삭제 : 삭제된 상태
비영속 - Entity 객체를 생성하는 단계에서는 순수 객체상태이므로 영속성 컨텍스트에 의해 관리되지 않는다.
// 객체를 생성한 상태 (비영속)
Memeber member = new Member();
member.setId("member1"); // 아무일도 일어나지 않는다. 단지 맴버 변수에 값을 넣어준것 뿐.
영속 - EntityManager에게 넣어준 Entity는 영속상태라 한다.
em.persist(member);
준영속 - 관리 중이던 Entity(member)를 영속성 컨텍스트에서 분리하고 준영속 상태가 된다.
em.detach(member);
삭제 - Entity(member)를 컨텍스트와 데이터베이스에서 삭제한다.
em.remove(member);
영속상태를 잘 구분해서 사용해야 될것 같다는 당연한?? 생각이 든다. 다음 포스팅은 영속성 컨텍스트의 특징들을 자세하게 살펴볼 예정이다! 내일은 토요일! ~~ 공부할 시간 많아서 행복해!
'JPA > 영속성 관리' 카테고리의 다른 글
#05 플러시 란? (0) | 2021.06.11 |
---|---|
#04 영속성 컨테스트의 특정 - 엔티티 등록 / 수정 / 삭제 (0) | 2021.06.06 |
#03 영속성 컨텍스트의 특징 - 엔티티 조회 (0) | 2021.06.05 |
#01 엔티티 매니저 팩토리와 엔티티 매니저 (1) | 2021.06.04 |