지난번 포스팅에 이어서
JPA 동작 원리에 대하여 정리해볼까 합니다
주관적인 견해가 있을 수 있으므로 너무 신뢰하지 않으셨으면 합니다
JPA의 기본 동작 요약
- 설정 파일을 통해서 JPA를 설정한다
- EntityManagerFactory를 생성한다
- EntityManager를 생성하여 Entity를 영속성 컨텍스트(Persistence Context)를 통해 관리한다
EntityManagerFactory
- EntityManager를 생성하는 객체입니다
- 하나의 EntityManagerFactory는 애플리케이션 전체에서 공유됩니다 - 싱글톤
EntityManager
- Entity를 관리하는 객체입니다
- 동시성의 문제가 발생할 수 있으니 쓰레드 간에 공유하면 안 됩니다(요청:객체 = 1:1)
- 모든 데이터 변경은 트랜잭션 안에서 이루어져야 합니다
Entity
- EntityManager가 관리하는 객체로 테이블과의 커넥션을 관리합니다
- 반드시 테이블과 관련된 필드만을 가져야 하는 것은 아닙니다
영속성 컨텍스트 ( Persistence Context )
- 형체가 없는 논리적인 개념입니다. 위의 사진에서는 Managed (Entity)를 감싸는 공간이 영속성 컨텍스트 입니다
- Entity의 생명주기를 관리
- 1차 캐시라는 메모리 공간으로 Entity를 관리하므로 중복 쿼리를 최소화하고 Entity의 동일성을 보장해줍니다
- 쓰기 지연, 변경 감지, 지연 로딩으로 성능 최적화에 유리합니다
이 정도로 정리해볼 수 있을 것 같습니다
제가 맞게 정리했는지 모르겠네요