[자바 ORM 표준 JPA 프로그래밍] 3.3 엔티티의 생명주기
개발서적/자바 ORM 표준 JPA

[자바 ORM 표준 JPA 프로그래밍] 3.3 엔티티의 생명주기

Reference. 자바 ORM 표준 JPA 프로그래밍

책 목차 및 이전 글

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

비영속

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

영속

  • 엔티티 매니저를 통해 엔티티를 역속성 컨텍스트에 저장 (조회, 등록, 수정, 삭제)
  • 영속성 컨텍스트가 관리하는 엔티티를 영속 상태
//객체를 저장한 상태(영속)
em.persist(member);

준영속

  • 영속 상태의 엔티티영속성 컨텍스트가 관리하지 않으면 준영속 상태로 변환
  • 특정 엔티티를 준영속 상태바꾸는 메소드 em.datach()
  • em.close() , em.clear() 를 통해 영속성 컨텍스트닫거나, 초기화해도 준영속 상태 변환
//회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태
em.detach(member);

삭제

  • 엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제
//객체를 삭제한 상태(삭제)
em.remove(member);

 

이미지 출처: https://ultrakain.gitbooks.io/jpa/content/chapter3/chapter3.4.html