Hibernate 在非托管环境中休眠

Hibernate 在非托管环境中休眠,hibernate,jpa,hibernate-entitymanager,Hibernate,Jpa,Hibernate Entitymanager,我遇到了一个小问题,我总是使用Hibernate和Spring在Web上使用GenericDAO模式,现在我使用Hibernate作为GUI应用程序,它不使用EJB之类的东西 我的主要问题是我以前有这个 @PersistenceContext(unitName=“persistenceUnit”) 私人实体管理者 但现在我是这样做的: private EntityManagerFactory emf=Persistence.createEntityManagerFactory(“persiste

我遇到了一个小问题,我总是使用Hibernate和Spring在Web上使用GenericDAO模式,现在我使用Hibernate作为GUI应用程序,它不使用EJB之类的东西

我的主要问题是我以前有这个

@PersistenceContext(unitName=“persistenceUnit”)
私人实体管理者

但现在我是这样做的:

private EntityManagerFactory emf=Persistence.createEntityManagerFactory(“persistenceUnit”);
私有EntityManager em=emf.createEntityManager()

我注意到了一个很大的缺陷,每当我继承这个GenericDAO类时,我每次都在创建一个EntityManagerFactory,我应该怎么做

编辑:

同意这是解决问题的最简单的方法吗

private EntityManagerFactory emf;
private static final Connector INSTANCE = new Connector();

public static Connector getInstance() {
    return INSTANCE;
}   

private Connector(){        
    emf = Persistence.createEntityManagerFactory("persistenceUnit");
}

public EntityManagerFactory getEmf() {      
return emf;
}

您仍然可以在没有Spring或其他容器的情况下使用依赖注入模式-在单个位置创建
EntityManagerFactory
,并在创建DAO对象时将其注入到DAO对象中。

类似于在每次调用时为我提供一个EntityManagerFactory的singleton吗?@JavaNoober:我的意思是,在某个时候,您需要构建道斯。如果将此点集中化,则可以在此处设置
EntityManagerFactory
s。几乎像Spring,但没有Spring。好吧,明白了,但我做的很好,人们已经开始抱怨他们必须开始并提交事务,试图让所有DB端远离开发人员