EntityManagerFactory 在应用程序管理的应用程序中的生命周期是什么?
What is the life cycle of EntityManagerFactory in application managed application?
我正在使用 JPA 2.1。实体管理器是在这里管理的应用程序。
样本Class:
public class TestDao {
private static EntityManagerFactory emf;
private static EntityManager em;
public static EntityManager initialize() {
if (emf == null) {
emf = Persistence.createEntityManagerFactory("persistence_unit");
}
return emf.createEntityManager();
}
public static void insert(Object obj){
em.persist(obj);
}
当用户第一次使用TestDao.initialize()
时,它会生成emf
和em
个实例。
这个 emf
实例会发生什么?
是否一直保持与数据库的连接?
如果我同时进行大量读取和写入,哪种方法更好:
- 创建
emf
一次(如我上面所用)
每次与数据库交互时,- 都会创建新的
emf
和 em
。
根据工厂模式,它应该 created/initialized 只有一次。因此 EntityManagerFactory 在整个应用程序中应该只有一个。您可以根据需要从该工厂创建 EntityManager。
参考文献:Factory Pattern,
When should be factory instance be created?
我正在使用 JPA 2.1。实体管理器是在这里管理的应用程序。
样本Class:
public class TestDao {
private static EntityManagerFactory emf;
private static EntityManager em;
public static EntityManager initialize() {
if (emf == null) {
emf = Persistence.createEntityManagerFactory("persistence_unit");
}
return emf.createEntityManager();
}
public static void insert(Object obj){
em.persist(obj);
}
当用户第一次使用TestDao.initialize()
时,它会生成emf
和em
个实例。
这个 emf
实例会发生什么?
是否一直保持与数据库的连接?
如果我同时进行大量读取和写入,哪种方法更好:
- 创建
emf
一次(如我上面所用)
每次与数据库交互时, - 都会创建新的
emf
和em
。
根据工厂模式,它应该 created/initialized 只有一次。因此 EntityManagerFactory 在整个应用程序中应该只有一个。您可以根据需要从该工厂创建 EntityManager。
参考文献:Factory Pattern, When should be factory instance be created?