JPA가 제공하는 기능
→ 매핑한 엔티티를 엔티티 매니저를 통해 어떻게 사용하는지 알아보자!
엔티티를 하나만 사용하는 애플리케이션은 일반적으로
EntityManagerFactory
를 하나만 생성한다.
// 공장 만들기, 비용이 아주 많이 든다.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
위 코드를 호출하면 META-INF/persistence.xml
에 있는 정보를 바탕으로, EntityManagerFactory
를 생성한다.
이제 필요할 때마다 엔티티 매니저 팩토리에서 엔티티 매니저를 생성하면 된다.
// 공장에서 엔티티 매니저 생성, 비용이 거의 안 든다.
EntityManager em = emf.createEntityManger();
엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안 된다!