【发布时间】:2016-06-25 19:02:06
【问题描述】:
我正在创建一个 Java EE 应用程序并使用休眠设置了我的持久性。因为我没有看到这个应用程序有那么大,所以我没有看到使用 EJB 的意义,所以我创建了一个 PersistenceUtil 类来管理我的 EntityManagerFactory。
类似这样的:
private static HashMap<String, Object> emfMap = new HashMap<String, Object>();
public static EntityManager getEntityManagerFor(String unitName){
if(!emfMap.isEmpty() || !emfMap.containsKey(unitName)){
EntityManagerFactory emf = Persistence.createEntityManagerFactory(unitName);
emfMap.put(unitName, emf);
return emf.createEntityManager();
} else {
//return the one that exists...
}
因此,由于可以有多个持久单元,因此我可以在使用它们时延迟加载它们。
我以这种方式创建它是因为我知道可以有多个持久单元。我不明白并且似乎找不到答案的是什么会让我创建另一个持久单元?一件事是我会假设多个数据库,但还有其他划分点吗?
【问题讨论】:
-
多个数据库是最常用的情况。也许其他人看到了其他应用程序。 (请注意您的
getEntityManagerFor()代码是危险的线程不安全) -
@SashaSalauyou 这就是我的假设,感谢您的指点,我很好奇我创建的东西是否会在以后咬我。
标签: hibernate jpa factory entitymanager persistence-unit