【问题标题】:Hibernate on non-managed environment在非托管环境中休眠
【发布时间】:2011-10-10 20:28:36
【问题描述】:

我遇到了一个小问题,我总是在具有 GenericDAO 模式的 Web 上使用 Hibernate 和 Spring,现在我将 Hibernate 用于不使用 EJB 之类的 GUI 应用程序。

我的主要问题是我曾经有这个

@PersistenceContext(unitName = "persistenceUnit") private EntityManager em;

但现在我是这样做的:

private EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); private 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;
}

【问题讨论】:

    标签: hibernate jpa hibernate-entitymanager


    【解决方案1】:

    您仍然可以在没有 Spring 或其他容器的情况下使用依赖注入模式 - 在一个地方创建 EntityManagerFactory 并在创建它们时将其注入 DAO 对象。

    【讨论】:

    • 类似于单例的东西,每次调用都为我提供一个 EntityManagerFactory?
    • @JavaNoober:我的意思是在某些时候你需要构建你的 DAO。如果你把这一点集中起来,你可以在那里设置EntityManagerFactorys。几乎像 Spring,但没有 Spring。
    • 好的,知道了,但是我做得很好,人们已经在抱怨他们必须开始并提交事务,试图让所有数据库端远离开发人员
    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多