我在过去构建了一些JPA的东西,它们使用了javax.persistence.EntityManager每个DAO实例的一个实例; 这是大多数示例的设置方式.
public class BaseDaoThatEveryDaoExtends {
@PersistenceContext
private EntityManager entityManager;
}
Run Code Online (Sandbox Code Playgroud)
我只是偶然发现使用注释注入的静态 代码,架构师告诉我这不会引起任何问题,即使在具有JTA和XA数据源的集群应用程序中也没有任何问题:javax.peristence.EntityMangerPersistenceContext
public class BaseDaoThatEveryDaoExtends {
@PersistenceContext
private static EntityManager entityManager;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这是一个反模式,因为它EntityManager保存一些状态信息并使其静态使整个状态应用程序广泛.这也使得课程很难测试.
这样做有其他缺点还是这是使用标准的方法EntityManager?