본문 바로가기

Server/Spring

[Spring/JPA] 엔티티 생명주기(Entity Lifecycle) 에 대해 알아보겠습니다.

엔티티의 생명주기는 영속성 컨텍스트와의 관계를 통해 이해할 수 있습니다. 엔티티가 영속성 컨텍스트 내에서 어떤 상태에 있는지에 따라, 그 생명주기는 크게 네 가지로 구분됩니다 : 비영속(New), 영속(Managed), 준영속(Detached), 삭제(Removed) 입니다.

엔티티 생명주기

 

1. 비영속 상태(New)

엔티티가 아직 영속성 컨텍스트에 저장되지 않은 상태로, 데이터베이스와는 전혀 연관이 없습니다. 예를 들어, 'new' 키워드로 새롭게 생성된 객체는 비영속 상태입니다.

Member member = new Member();
member.setId(1L);
member.setName("1번 사용자");

 

2. 영속 상태 (Managed)

엔티티가 영속성 컨텍스트에 의해 관리되는 상태입니다. 이 상태에서 엔티티는 데이터베이스에 저장될 수 있으며, 영속성 컨텍스트를 통해 자동으로 추적되고 관리됩니다. EntityManager의 persist() 메소드를 통해 비영속 상태의 엔티티를 영속 상태로 만들 수 있습니다.

entityManager.persist(member) //영속

 

3. 준영속 상태 (Detached)

영속성 컨텍스트에 의해 더 이상 관리되지 않는 상태입니다. 이 상태의 엔티티는 영속성 컨텍스트가 제공하는 기능을 사용할 수 없습니다. EntityManager 의 detach() 메소드를 통해 영속 상태의 엔티티를 준영속 상태로 만들 수 있습니다.

entityManager.detach(member) //준영속

 

4. 삭제 (Removed)

영속성 컨텍스트에서 엔티티가 삭제된 상태입니다. 이 상태의 엔티티는 영구적으로 데이터베이스에서 삭제됩니다. EntityManager 의 remove() 메서드를 사용하여 엔티티를 삭제 상태로 전환할 수 있습니다.

entityManager.remove(member) //실제 DB에 삭제를 요청한 상태