【发布时间】:2012-01-27 02:42:20
【问题描述】:
我过去构建了一些 JPA 的东西,每个 DAO 实例使用一个 javax.persistence.EntityManager 实例;这是大多数示例的设置方式。
public class BaseDaoThatEveryDaoExtends {
@PersistenceContext
private EntityManager entityManager;
}
我刚刚偶然发现使用由PersistenceContext 注释注入的静态 javax.peristence.EntityManger 的代码,架构师告诉我这不会导致任何问题,即使在集群中他们也从未遇到任何问题带有 JTA 和 XA 数据源的应用程序:
public class BaseDaoThatEveryDaoExtends {
@PersistenceContext
private static EntityManager entityManager;
}
据我所知,这是一种反模式,因为 EntityManager 包含一些状态信息,并将其设为静态会使整个状态应用程序更广泛。这也使得这些类很难测试。
这样做是否还有其他缺点,或者这是使用EntityManager 的标准方式?
【问题讨论】:
标签: java hibernate jpa entitymanager