1. 엔티티 매니저 팩토리와 엔티티 매니저
JPA의 작동순서를 크게 봤을 때 다음과 같다.
- EntityManagerFactor에 의해 EntityManager가 생성되고 EntityManager를 통해 영속성 컨텍스트에 접근한다.
- EntityManager가 영속성 컨텍스트가 아니다!
- 영속성 컨텍스트는 EntityManger 내부에 존재하고, EntityManager를 이용하여 영속성 컨텍스트를 관리하는 것이다.

- 요청이 들어올 때마다 EntiryManagerFactory는 EntityManager를 생성하여 각 용청에 할당한다.
2. 영속성 컨텍스트
엔티티를 영구 저장하는 환경
- 영속성 컨텍스트에서 관리되는 엔티티는 다음과 같은 생명주기를 갖는다.*
비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태이다.
영속(managed) : 영속성 컨텍스트에 관리되는 상태
준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태
삭제(removed) : 삭제된 상태 -> 찐 삭제
비영속 상태
영속 상태
-
객체가 영속성 컨텍스트에 속한(관리를 받는) 상태
-
여기서 주의해야 할 점은 객체가 영속 상태가 되었다고 해서 현재 객체의 상태가 DB에 저장되는 것이 아니라는 것이다.
-
트랜잭션이 종료되는 시점 즉 commit이 되는 시점에 반영이된다.
-
코드 상에서의 비영속
-
영속성 컨텍스트에 등록됨

출처