영속성 컨텍스트와 엔티티 생명주기

신상현·2021년 2월 2일
0

Spring Boot와 JPA

목록 보기
4/16

영속성 컨텍스트(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에서 삭제한다.
profile
개발자 싱상형

0개의 댓글