3.JPA APIs
1. Interface Summary
1-1.EntityManagerFactory
EntityManager 객체를 생성할 수 있는 Factory 클래스
EntityManagerFactory factory = Persistence.createEntityManagerFactory("sample");1-2.EntityManager
Entity 객체 관리자
트랜잭션 단위 수행 시 마다 작성, 트랜잭션 수행 후에는 자원을 반납(close())해야 내부적으로 Connection 객체를 반납함
EntityManagerFactory factory = Persistence.createEntityManagerFactory("sample");
EntityManager manager = factory.createEntityManager();1-3.EntityTransaction
데이터에 대한 변경(Update, Delete, Insert) 작업 시 사용되는 트랜잭션 처리 담당 객체 EntityManager 객체를 통해 생성
Select는 필요 없음 commit 수행 시에만 쿼리가 한 번에 적용될 수 있도록 쓰기지연 기능 제공
EntityManager manager = factory.createEntityManager();
EntityTransaction transaction = manager.getTransaction();2. Class Summary
2-1.Persistence
EntityManagerFactory 객체를 얻기 위해 사용되는 부트스트래핑 클래스
2-1-1. Persistence unit
EntityManager에 의해 관리되는 모든 Entity
2-1-2. Persistence Context, PC, 영속성 컨텍스트
Entity들이 보관, 관리되는 실제 DB가 아닌 임시 메모리 영역
실제 데이터베이스에 입출력을 수행하기 전에 임시로 저장, 관리되는 영역
JPA를 활용할 경우, 매번 DB에 접근하지 않고 메모리 영역인 PC에서 먼저 엔티티를 찾게 됨
따라서 해당 엔티티가 영속성 컨텍스트에 보관되어 있는 경우 데이터베이스까지 접근하지 않고, 이 컨텍스트에서 가져옴
→ 일련의 캐싱 동작
반대로 영속성 컨텍스트에 보관되어 있지 않은 경우 데이터베이스에 접근하여 가져옴
이러한 영속성 컨텍스트는 EntityManager가 관리
3. 전체 동작 순서
-
Persistence 클래스를 통해 EntityManagerFactory 인스턴스 생성
-
생성된 EntityManagerFactory는 Persistence unit인 persistence.xml 파일에 의해 설정 정보가 구성됨
-
EntityManagerFactory를 통해 EntityManager 인스턴스 생성
-
EntityManager를 통해 Entity가 관리됨 → 실제 Entity의 관리는 영속성 컨텍스트(Persistence Context)에서 수행됨
