JPA가 제공하는 기능

→ 매핑한 엔티티를 엔티티 매니저를 통해 어떻게 사용하는지 알아보자!

1. 엔티티 매니저 팩토리와 엔티티 매니저

엔티티를 하나만 사용하는 애플리케이션은 일반적으로 EntityManagerFactory 를 하나만 생성한다.

// 공장 만들기, 비용이 아주 많이 든다.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
// 공장에서 엔티티 매니저 생성, 비용이 거의 안 든다.
EntityManager em = emf.createEntityManger();

엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하므로 서로 다른 스레드 간에 공유해도 되지만, 엔티티 매니저는 여러 스레드가 동시에 접근하면 동시성 문제가 발생하므로 스레드 간에 절대 공유하면 안 된다!