Entity LifeCycle

최대 1 분 소요

Entity Lifecycle이란 ?


image info

Entity 객체가 생성되어 영속성 컨텍스트(Persistence Context)에서 관리되는 과정

  • Entity가 어떤 상태에 있는 지를 나타내며 상태 변화에 따라 Entity와 DB 간의 동기화 작업이 수행됨
  • Entity 생명주기는 Transient(비영속), Managed(영속), Detached(준영속), Removed(삭제) 4개의 상태로 이루어있음



Entity Lifecycle 상태 종류


Transient(비영속)

  • Entity 객체가 생성되었지만 영속성 컨텍스트와 관련이 없는 상태
  • 단순 객체 생성 상태로 JPA가 모르는 상태
Example example = new Example();


Managed(영속)

  • Entity 객체가 영속성 컨텍스트에 저장되어 관리되고 있는 상태
  • Entity Manager를 사용하여 영속성 컨텍스트에 등록
  • 현재 상태에서는 Entity는 영속성 컨텍스트가 제공하는 Dirty Checking, 변경 추적, DB와 동기화 작업이 가능
  • Transaction Commit시에 DB와 동기화 작업을 수행
//Entity 영속화
em.persist(example);

//준영속 상태의 Enity를 다시 영속화
em.merge(example);


Detached(준영속)

  • 영속성 컨텍스트에 의해 관리되던 Entity가 영속성 컨텍스트에서 분리된 상태
  • Entity는 영속성 컨텍스트가 제공하는 Dirty Checking, 변경 추적, DB와 동기화 작업이 불가능
  • 영속성 컨텍스트와 관계가 없는 상태
//영속화된 Entity 분리
em.detach(example);

//영속성 컨텍스트 닫기 및 초기화
em.close();
em.clear();


Removed(삭제)

  • 영속성 컨텍스트에 의해 관리되던 Entity가 DB에서 삭제된 예정인 상태
  • Transaction Commit시 Entity가 DB에서 삭제
//영속성 컨텍스트 및 DB에서 삭제
em.remove(example);