【问题标题】:What Determines a persistence unit什么决定了持久性单元
【发布时间】: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


【解决方案1】:

通常为不同的数据库创建一个单独的持久性单元。然而,这并不是唯一的原因。您可以为同一个数据库设计多个持久性单元,但具有不同的配置或类,即当您在多个环境中部署应用程序时。

【讨论】:

  • 那么你会说一个用于 prod、stage 和 test 的吗?这将如何在构建您的 EntityManager 的代码中工作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
相关资源
最近更新 更多