질문

엔티티 매니저의 생명 주기에 대해서 설명해줘

답변

엔티티 매니저(Entity Manager)는 JPA(Java Persistence API)에서 엔티티의 생명 주기를 관리하는 핵심적인 역할을 합니다. 엔티티 매니저의 생명 주기와 관련된 주요 개념과 단계를 설명하겠습니다.

엔티티 매니저의 주요 생명 주기 단계

  1. 비영속(Transient) 상태
  2. 영속(Managed) 상태
  3. 준영속(Detached) 상태
  4. 삭제(Removed) 상태

각 단계는 엔티티의 상태를 관리하는 엔티티 매니저의 역할을 이해하는 데 중요합니다.

1. 비영속(Transient) 상태

엔티티가 아직 영속성 컨텍스트에 관리되지 않는 상태입니다. 엔티티가 새로 생성되었지만 데이터베이스에 저장되지 않은 상태를 의미합니다.

java코드 복사
EntityManager em = ...;
Review review = new Review(); // 비영속 상태

2. 영속(Managed) 상태

엔티티가 영속성 컨텍스트에 의해 관리되는 상태입니다. 엔티티 매니저를 통해 엔티티가 관리되고, 해당 엔티티는 데이터베이스와 동기화됩니다.

java코드 복사
em.persist(review); // 영속 상태로 전환

이 상태에서 엔티티에 대한 변경 사항은 영속성 컨텍스트에 의해 자동으로 추적되며, 트랜잭션이 커밋될 때 데이터베이스에 반영됩니다.

3. 준영속(Detached) 상태

엔티티가 더 이상 영속성 컨텍스트에 의해 관리되지 않는 상태입니다. 엔티티 매니저가 닫히거나 엔티티가 명시적으로 분리(detach)될 때 이 상태로 전환됩니다.

java코드 복사
em.detach(review); // 준영속 상태로 전환