JPA - Entity의 생명주기

목차

엔티티 생명주기

비영속 (new/transient)

Entity 객체가 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태

  • Entity 객체가 생성돼 아직 영속성 컨텍스트에 저장되기 전 상태다.
// 비영속 상태
Member member = new Member();
member.setId(101L);
member.setName("HelloJPA");

영속 (managed)

Entity 객체가 현재 영속성 컨텍스트에 관리되는 상태

  • 해당 객체(Entity) 에 대한 변경 작업은 영속성 컨텍스트가 관리한다.
  • EntityManager Persist 메소드를 이용해 Entity 객체를 영속성 컨텍스트에 저장할 수 있다.
// 영속 상태
em.persist(member);

준영속 (detached)

객체가 영속성 컨텍스트에 저장돼 있다가 현재는 영속성 컨텍스트에서 분리(삭제)된 상태, 더 이상 JPA 가 관리하지 않는다.

  • 영속성 컨텍스트에서 분리(삭제) 됐을 뿐이지 데이터적으로의 삭제는 일어나지 않는다.
  • 해당 객체(Entity) 에 대한 변경 작업이 일어나도 영속성 컨텍스트 및 Database에 반영되지 않는다.
// 준 상태
em.detach(member);

삭제 (removed)

데이터 적으로 삭제된 상태

// 삭제 상태
em.remove(member);
Share