JPA가 제공하는 기능은 크게 두 가지이다.
데이터베이스를 하나만 생성하는 애플리케이션은 일반적으로
EntityManagerFactory
를 하나만 만든다.
엔티티 매니저 팩토리 생성 코드
/* 공장 만들기, 비용이 아주 많이 든다! */
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
이제부터 필요할 때마다 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하면 된다.
/* 공장에서 엔티티 매니저 생성, 비용이 거의 안든다. */
EntityManager em = emf.createEntityManager();
<aside> 🌱 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하다 → 공유 가능! but, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생한다!
</aside>
엔티티 매니저는 데이터베이스 연결이 꼭 필요한 시점까지 커넥션을 얻지 않는다.