김영한님이 지음, [자바 ORM 표준 JPA 프로그래밍] 책을 읽고 정리한 필기입니다.📢
엔티티 생명주기
엔티티 생명 주기
엔티티에는 4가지 상태가 존재
- 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태
- 영속(managed) : 영속성 컨텍스트에 저장된 상태
- 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
- 삭제(removed) : 삭제된 상태
비영속
엔티티 객체를 생성함, 순수한 객체의 상태이며 아직 저장하지 않은 상태
1
2
3
4
//객체를 생성한 상태(비영속)
Memeber member = new Memeber();
member.setId("member1");
member.setUsername("회원1");
비영속 상태
영속
엔티티 매니저를 통해 엔티티를 영속성 컨텍스트에 저장한 상태
영속성 컨텍스트가 관리하는 엔티티를 영속 상태라 함, 영속 상태 == 영속성 컨텍스트에 의해 관리된다는 뜻
1
2
//객체를 저장한 상태(영속)
em.persist(member);
영속 상태
준영속
영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 영속성 컨텍스트가 관리하지 않는 상태
1
2
3
4
5
//회원 엔티티를 영속성 컨텍스트에서 분리, 준영속 상태
em.detach();
//또는
em.close();
em.clear();
EntityManager 객체를 닫거나 초기해도 영속성 컨텍스트가 관리하던 영속 상태의 엔티티는 준영속 상태로 변경 된다.
삭제
엔티티를 영속성 컨텍스트와 데이터베이스에서 삭제한다.
1
2
//객체를 삭제한 상태(삭제)
em.remove(member);
댓글남기기