엔티티 메니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다.
=> 엔티티를 관리하는 관리자
엔티티 메니저는 개발자 입장에서 엔티티를 저장하는 가상의 DB라고 생각하면 된다.
DB를 하니만 사용하는 애플리케이션은 EntityManagerFactory를 하나만 생성한다.
=> 비용이 많이드는 작업이라 하나만 생성해서 같이 사용한다.
EntityFactoryManager emf = Persistence.createEntityManagerFactory("test")
Persistence.createEntityManagerFactory("test")를 호출하면
META-INF/persistence.xml에 있는 정보를 바탕으로 EntityFactoryManager를 생성
이후 필요할 때마다 엔티티 팩토리 메니저에서 엔티티 매니저를 생성하면된다.
=> 엔티티 매니저 생성비용은 거의 들지 않는다.
엔티티 팩토리 매니저 : 여러 스레드가 동시에 접근해도 안전
엔티티 매니저 : 여러 스레드가 동시에 접근하면, 동시성 문제가 발생 (절대 공유 X)
엔티티 매니저는 DB연결이 꼭 필요한 시점까지 커넥션을 얻지 않는다.