3.3 엔티티의 생명주기

4가지 상태

비영속(new/transient) 영속성 컨텍스트와 전혀 관계가 없는 상태
영속(managed) 영속성 컨텍스트에 저장된 상태
준영속(detached) 영속성 컨텍스트에 저장되었다가 분리된 상태
삭제(removed) 삭제된 상태

생명주기

비영속

  • 엔티티 객체를 생성.
  • 순수한 객체 상태, 아직 저장하지 않음.
  • 영속성 컨텍스트나 데이터베이스와 상관없음.
// 객체를 생성한 상태(비영속)
Member member = new Member();
member.setId(100L);
member.setUsername("회원1");

em.persist() 호출 전, 비영속 상태

영속

  • 엔티티 매니저를 통해 엔티티를 영속성 컨텍스트에 저장.
  • 영속성 컨텍스트가 관리하는 엔티티를 영속 상태.
  • 회원 엔티티 : 비영속 상태 => 영속 상태
  • 영속상태 = 영속성 컨텍스트에 의해 관리된다는 뜻.
  • em.find()JPQL를 사용해서 조회한 엔티티도 영속 상태.
// 객체를 저장한 상태(영속)
em.persist(member);

em.persist() 호출 후, 영속상태

준영속

  • 영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 영속성 컨텍스트가 관리하지 않으면 "준영속 상태".
  • em.detach() 호출로 준영속 상태 명시적 호출.
  • em.close()를 호출해서 영속성 컨텍스트를 닫음.
  • em.clear로 영속성 컨텍스트 초기화.
    // 회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태
    em.detach(member);
    

삭제

엔티티를 영속성 컨텍스트와 데이타베이스에서 삭제.

// 객체를 삭제한 상태(삭제)
em.remove(member);

results matching ""

    No results matching ""