Hibernate 什么决定了持久性单元

Hibernate 什么决定了持久性单元,hibernate,jpa,factory,entitymanager,persistence-unit,Hibernate,Jpa,Factory,Entitymanager,Persistence Unit,我正在创建一个JavaEE应用程序,并使用hibernate设置了持久性。因为我不认为这个应用程序有那么大,我不认为使用EJB有什么意义,所以我创建了一个PersistenceUtil类来管理我的EntityManagerFactory 大概是这样的: private static HashMap<String, Object> emfMap = new HashMap<String, Object>(); public static EntityManager get

我正在创建一个JavaEE应用程序,并使用hibernate设置了持久性。因为我不认为这个应用程序有那么大,我不认为使用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...
}
private static HashMap emfMap=new HashMap();
公共静态EntityManager GetEntityManager(字符串unitName){
如果(!emfMap.isEmpty()| |!emfMap.containsKey(unitName)){
EntityManagerFactory emf=Persistence.createEntityManagerFactory(unitName);
emfMap.put(unitName,emf);
返回emf.createEntityManager();
}否则{
//返回存在的一个。。。
}
因此,由于可以有多个持久性单元,我可以在使用它们时惰性地加载它们


我之所以这样创建它,是因为我知道可以有多个持久化单元。我不明白,也似乎找不到答案的是,是什么让我创建了另一个持久化单元?一件事是我假设有多个数据库,但还有其他划分点吗?

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

多个数据库是最常用的情况。可能其他人看到了其他应用程序。(请考虑您的<代码> GeTyTyMauleCurror()/Case>代码是危险的线程不安全)@SashaSalauyou这就是我假设的,谢谢你给我的指针,我很好奇我正在创建的东西是否会在以后咬我的屁股。那么你会说是prod、stage和test的一个吗?这在构建EntityManager的代码中是如何工作的?