엔티티의 생명주기는 영속성 컨텍스트와의 관계를 통해 이해할 수 있습니다. 엔티티가 영속성 컨텍스트 내에서 어떤 상태에 있는지에 따라, 그 생명주기는 크게 네 가지로 구분됩니다 : 비영속(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에 삭제를 요청한 상태
'Server > Spring' 카테고리의 다른 글
[Spring] 스프링 4.2 이후 version 에서 Application Event 도입을 해보았습니다. (0) | 2024.09.02 |
---|---|
[Spring] failed to lazily initialize a collection of role (2) | 2024.08.14 |
[Spring/JPA] 영속성 컨텍스트(Persistence Context)에 대해 알아보겠습니다. (0) | 2023.10.17 |
[Spring] 스프링 컨테이너와 빈 객체의 생명 주기를 알아보겠습니다. (1) | 2023.10.06 |
[Spring] 스프링 컨테이너와 빈 (0) | 2023.10.06 |