JPA 엔티티 생명주기 완벽 가이드
엔티티 생명주기란 JPA(Java Persistence API)에서 엔티티의 생명주기는 엔티티 객체가 생성되고 소멸할 때까지 거치는 일련의 상태 변화를 의미하며, 이 개념은 2006년 Java EE 5와 함께 발표된 JPA 1.0 명세에서 처음 정의되었고, Hibernate의 Session 개념을 표준화한 영속성 컨텍스트(Persistence Context)를 중심으로 설계되었다. 엔티티가 영속성 컨텍스트에 의해 관리되는지 여부와 데이터베이스와의 동기화 상태에 따라 비영속(Transient), 영속(Managed), 준영속(Detached), 삭제(Removed)의 4가지 상태로 구분되며, 각 상태는 EntityManager의 persist(), merge(), detach(), remove() 메서드를 통해 전이된다. 엔티티의 상태를 올바르게 이해하는 것은 JPA를 효과적으로 사용하고 데이터 일관성을 유지하며 성능을 최적화하는 데 필수적인데, 이는 영속성 컨텍스트가 제공하는 1차 캐시, 변경 감지(Dirty Checking), 쓰기 지연(Write-Behind) 등의 기능이 모두 엔티티의 영속 상태에서만 작동하기 때문이며, 상태를 잘못 이해하면 LazyInitializationException이나 EntityNotFoundException 같은 예외가 발생하거나 의도치 않은 데이터 손실이 발생할 수 있다. ...