김영한님이 지음, [자바 ORM 표준 JPA 프로그래밍] 책을 읽고 정리한 필기입니다.📢

엔티티 생명주기

img-name
엔티티 생명 주기

엔티티에는 4가지 상태가 존재

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

비영속

엔티티 객체를 생성함, 순수한 객체의 상태이며 아직 저장하지 않은 상태

1
2
3
4
//객체를 생성한 상태(비영속)
Memeber member = new Memeber();
member.setId("member1");
member.setUsername("회원1");

img-name
비영속 상태

영속

엔티티 매니저를 통해 엔티티를 영속성 컨텍스트에 저장한 상태

영속성 컨텍스트가 관리하는 엔티티를 영속 상태라 함, 영속 상태 == 영속성 컨텍스트에 의해 관리된다는 뜻

1
2
//객체를 저장한 상태(영속)
em.persist(member);

img-name
영속 상태

준영속

영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 영속성 컨텍스트가 관리하지 않는 상태

1
2
3
4
5
//회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태
em.detach();
//또는
em.close(); 
em.clear(); 

EntityManager 객체를 닫거나 초기해도 영속성 컨텍스트가 관리하던 영속 상태의 엔티티는 준영속 상태로 변경 된다.

삭제

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

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

JPA 카테고리 내 다른 글 보러가기

댓글남기기