JPA 영속성 컨텍스트 - 정의

Daniel6364·2022년 8월 2일
0
post-thumbnail

영속성 컨텍스트란?

  • JPA를 이해하는 데 가장 중요한 용어
  • 영속성 컨텍스트(persistence context) : 엔티티를 영구 저장하는 환경
  • 엔티티 매니저로 엔티티를 저장, 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리함.
em.persist(memeber);
  • persist() 메소드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다.
  • 영속성 컨텍스트는 논리적인 개념에 가깝다.
  • 영속성 컨텍스트는 엔티티 매니저를 생성할 때 하나 만들어진다.
  • 영속성 컨텍스트는 엔티티 매니저를 통해 접근할 수 있고, 관리할 수 있다.
  • 여러 엔티티 매니저가 같은 영속성 컨텍스트에 접근할 수도 있다.

엔티티의 생명주기

엔티티에는 4가지 상태가 존재

  1. 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태
  2. 영속(managed) : 영속성 컨텍스트에 저장된 상태
  3. 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
  4. 삭제(removed) : 삭제된 상태
엔티티의 생명주기

▼ 비영속(new/transient)

  • 엔티티 객체를 생성
  • 순수한 객체 상태이며 아직 저장하지 않음
  • 따라서 영속성 컨텍스트나 데이터베이스와는 전혀 관련 없음
  • em.persist();

▼ 영속(managed)

  • 엔티티 매니저를 통해 엔티티를 영속성 컨텍스트에 저장
  • 영속상태 : 영속성 컨텍스트가 관리하는 엔티티-
  • 결국 영속 상태라는 것은 영속성 컨텍스트에 의해 관리된다는 뜻
객체를 저장한 상태(영속)
  • em.persist(member);

▼ 준영속(detached)

  • 영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 영속성 컨텍스트가 관리하지 않으면 준영속 상태가 된다.
  • 특정 엔티티를 준영속 상태로 만들려면 em.detach()를 호출하면 된다.
  • em.close()를 호출해서 영속성 컨텍스트를 닫거나
  • em.clear()를 호출해서 영속겅 컨텍스트를 초기화 해도
  • 영속성 컨텍스트가 관리하던 영속 상태의 엔티티는 준영속 상태가 된다.
  • em.detach(mamber);

▼ 삭제(removed)

  • 엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제
  • em.remove(mamber);
profile
The Office Lover

0개의 댓글