我一直认为@PersistenceContext用于将EntityManager注入到容器管理的应用程序中,而@PersistenceUnit用于注入EntityManagerFactory。
Javadoc 说
对于持久性单元(http://docs.oracle.com/javaee/7/api/javax/persistence/PersistenceUnit.html http://docs.oracle.com/javaee/7/api/javax/persistence/PersistenceUnit.html)
表达对 EntityManagerFactory 及其关联的持久性单元的依赖关系。
对于 PersistenceContext (http://docs.oracle.com/javaee/7/api/javax/persistence/PersistenceContext.html http://docs.oracle.com/javaee/7/api/javax/persistence/PersistenceContext.html)
表达对容器管理的 EntityManager 及其关联的持久性上下文的依赖关系。
到目前为止一切顺利,但后来我正在阅读 JPA 教程(请参阅https://docs.oracle.com/cd/E19798-01/821-1841/bnbqy/index.html https://docs.oracle.com/cd/E19798-01/821-1841/bnbqy/index.html)包含这样的示例
以下示例显示如何在使用应用程序管理的实体管理器的应用程序中管理事务:
@PersistenceContext
EntityManagerFactory emf;
EntityManager em;
@Resource
UserTransaction utx;
...
em = emf.createEntityManager();
try {
utx.begin();
em.persist(SomeEntity);
em.merge(AnotherEntity);
em.remove(ThirdEntity);
utx.commit();
} catch (Exception e) {
utx.rollback();
}
那么如果我们谈论应用程序托管代码,PersistenceContext 也可以引用 EntityManagerFactory 吗?
免责声明——我猜与这个问题的答案无关——PersistenceUnit 与 PersistenceContext https://stackoverflow.com/questions/21038706/persistenceunit-vs-persistencecontext#