2023. 10. 17. 16:53
EntityManager, EntityManager Factory
영속성 컨텍스트 (엔티티를 영구 저장하는 환경)
EntityManager.persist() 는 새로운 오브젝트를 데이터베이스에 넣는 방법이다.
여기서 persist 는 곧바로 오브젝트를 데이터베이스에 넣지 않는다. 단지 새로운 영속성 컨텍스트 (트랜젝션)에 등록한다.
EntityManager : PersistenceContext = 1 : 1
엔티티매니저는 내부적으로 PersistenceContext 를 생성
Entity 라이프사이클
비영속 (new/transient) : 객체를 생성한 상태
영속 (managed) : 영속성 컨텍스트에 의해 관리되는 상태
준영속 (detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
삭제 (removed) : 삭제된 상태
Detached <- detach(), clear(), close() <- Managed
Detached -> merge() -> Managed
new -> persist() -> Managed
Managed -> remove() -> Removed
Managed <- persist() <- Removed
Managed -> flush() -> DB
Managed <- find(), JPQL <- DB
Removed -> flush() -> DB