我有几个关于在 JavaSE 环境中使用实体管理器的问题。
我正在使用存储库模式在数据库上执行我的 CRUD 操作。将有一个像这样的基础存储库类:
public class Repository<T> implements IRepository<T> {
private EntityManager em;
private String persistenceUnitName;
public Repository(String persistenceUnitName) {
this.persistenceUnitName = persistenceUnitName;
}
@Override
public T find(Class<T> type, Object id) {
return em.find(type, id);
}
private EntityManager getEntityManager() {
if (this.em == null) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName);
em = emf.createEntityManager();
}
return em;
}
...
...
}
然后,我将拥有像 EmployeeRepository 这样的类来继承 Repository。这些存储库类将在我的服务层中创建。
这是初始化实体管理器的好方法吗?我开始认为它不是 - 似乎每个持久性单元应该只有一个实体管理器?在这种情况下,您将为您创建的每个存储库都有一个实体管理器……您将如何确保每个持久性单元只有一个实体管理器?另外,我注意到实体管理器和实体管理器工厂方法有一个 close 方法 - 什么时候应该调用它们?在服务器终止事件上?
如果您知道有关在 JavaSE 中使用 JPA 的任何良好资源,我将不胜感激。
谢谢!