엔티티 생명주기

JPA(Java Persistence API)에서 엔티티의 생명주기는 엔티티가 생성되고 소멸할 때까지의 과정을 의미한다.

엔티티 생명주기의 4가지 상태

  1. 비영속(new/transient):

    • 새로운 엔티티가 생성되었지만, 아직 EntityManager에 의해 관리되지 않은 상태이다.
    • 데이터베이스에 저장되지 않은 상태이며, 영속성 컨텍스트에 관리되지 않는다.
    • new 키워드로 생성된 엔티티는 비영속 상태이다.
  2. 영속(managed):

    • EntityManager에 의해 관리되는 상태로, 영속성 컨텍스트에 저장된 상태이다.
    • 엔티티는 데이터베이스와 동기화되어 있으며, 영속성 컨텍스트에 의해 관리된다.
    • persist() 메서드를 사용하여 엔티티를 영속 상태로 만들 수 있다.
  3. 준영속(detached):

    • 영속성 컨텍스트에 의해 관리되지 않는 상태이다.
    • 영속 상태에서 분리된 상태로, 영속성 컨텍스트에 의해 관리되지 않는다.
    • detach() 메서드를 사용하여 엔티티를 준영속 상태로 만들 수 있다.
  4. 삭제(removed):

    • 아직 데이터베이스에 삭제되지 않은 상태이며, 영속성 컨텍스트에 삭제된 상태이다.
    • 다음 트랜잭션을 커밋할 때 데이터베이스에서 삭제된다.
    • remove() 메서드를 사용하여 엔티티를 삭제 상태로 만들 수 있다.

결론

엔티티의 생명주기는 비영속, 영속, 준영속, 삭제의 4가지 상태로 구분된다. 엔티티의 상태에 따라 영속성 컨텍스트에 저장되거나 삭제되는 등의 동작이 이루어진다.