엔티티 생명주기
JPA(Java Persistence API)에서 엔티티의 생명주기는 엔티티가 생성되고 소멸할 때까지의 과정을 의미한다.
엔티티 생명주기의 4가지 상태
비영속(new/transient):
- 새로운 엔티티가 생성되었지만, 아직 EntityManager에 의해 관리되지 않은 상태이다.
- 데이터베이스에 저장되지 않은 상태이며, 영속성 컨텍스트에 관리되지 않는다.
new
키워드로 생성된 엔티티는 비영속 상태이다.
영속(managed):
- EntityManager에 의해 관리되는 상태로, 영속성 컨텍스트에 저장된 상태이다.
- 엔티티는 데이터베이스와 동기화되어 있으며, 영속성 컨텍스트에 의해 관리된다.
persist()
메서드를 사용하여 엔티티를 영속 상태로 만들 수 있다.
준영속(detached):
- 영속성 컨텍스트에 의해 관리되지 않는 상태이다.
- 영속 상태에서 분리된 상태로, 영속성 컨텍스트에 의해 관리되지 않는다.
detach()
메서드를 사용하여 엔티티를 준영속 상태로 만들 수 있다.
삭제(removed):
- 아직 데이터베이스에 삭제되지 않은 상태이며, 영속성 컨텍스트에 삭제된 상태이다.
- 다음 트랜잭션을 커밋할 때 데이터베이스에서 삭제된다.
remove()
메서드를 사용하여 엔티티를 삭제 상태로 만들 수 있다.
결론
엔티티의 생명주기는 비영속, 영속, 준영속, 삭제의 4가지 상태로 구분된다. 엔티티의 상태에 따라 영속성 컨텍스트에 저장되거나 삭제되는 등의 동작이 이루어진다.