我正在将 JPA-Hibernate 应用程序从 Java EE 6 环境迁移到 Tomcat 7 环境。
该应用程序有多个 DAO 类在 EntityManager
上进行查询。在 Java EE 环境中,我可以使用 @PersistenceContext 注释注入(inject)它,并让容器管理 EntityManager。现在我必须手动完成,我想知道该怎么做。
实体管理器应该是唯一的吗?如果是的话,它可以是一个静态最终字段,在启动时创建并且每个 DAO 类都使用吗?它的生命周期是否涉及关闭然后重新打开它?
最佳答案
不幸的是,您必须手动执行此操作。我通常的做法是定义一个特殊的类:
public class EMF {
private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("name");
public static EntityManager getEntityManager() {
return factory.createEntityManager();
}
}
所以,每次需要EntityManager时,都必须手动创建它。您还需要处理事务:
EntityManager em = EMF.getEntityManager();
EntityTransaction et = em.getTransaction();
try {
MyEntity my = new MyEntity();
et.begin();
try {
em.persist(my);
et.commit();
} catch (Exception ex) {
if (et.isActive())
et.rollback();
}
} finally {
em.close();
}
关于java - Hibernate - EntityManager 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14354830/