JPA는 중요한 두가지 줄기가 있는데 하나는 내부 작동 원리인 영속성 컨텍스트의 이해와 객체와 테이블의 매핑문제이다.

이 중에서도 영속성 컨텍스트라는 저장소는 JPA에 핵심적인 내부 작동원리이다.엔티티 매니저 팩토리와 엔티티 매니저를 통해 영속성 컨텍스트를 사용하는 것에 대해서 공부한다.일단 스프링에서 영속성 컨텍스트 내부 작동원리를 이해하기 위해서 Raw JPA를 사용하기로 한다.

KakaoTalk_20220926_121943801.jpg

엔티티 매니저 생성 과정

KakaoTalk_20220926_132253637.jpg

1)Persistence 클래스에서 설정 정보 가져온다.
2)설정정보를 바탕으로 EntityManagerFactory를 생성한다.
3)EntityManagerFactory를 통해 다시 EntityManager를 생성한다.

EntityManagerFactory 생성

KakaoTalk_20220926_134348863.jpg

엔티티 매니저 팩토리는 한 개만 만들어서 애플리케이션 전체에서 공유한다.

엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드간에 공유해도 된다.

EntityManagerFactory emf = Persistence.**createEntityManagerFactory**("JPABASIC");

JPABASIC"이라는 이름을 가진 영속성 유닛(Persistence Unit)을 지정한다

영속성 유닛은 persistence.xml 파일에 정의되어 있으며, 데이터베이스 연결 및 엔터니 매핑 정보 등을 다양한 정보를 포함한다.

영속성 유닛(JPABASIC)에 해당하는 설정 정보로 부터 EntityManagerFactory 인스턴스를 생성한다**.**