- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直认为@PersistenceContext 用于将 EntityManager 注入(inject)容器管理的应用程序,而@PersistenceUnit 用于注入(inject) EntityManagerFactory。
Javadoc 说
对于 PersistenceUnit ( http://docs.oracle.com/javaee/7/api/javax/persistence/PersistenceUnit.html )
Expresses a dependency on an EntityManagerFactory and its associated persistence unit.
对于 PersistenceContext ( http://docs.oracle.com/javaee/7/api/javax/persistence/PersistenceContext.html)
Expresses a dependency on a container-managed EntityManager and its associated persistence context.
到目前为止一切顺利,但后来我正在阅读 JPA 教程(请参阅 https://docs.oracle.com/cd/E19798-01/821-1841/bnbqy/index.html),其中包含这样的示例
The following example shows how to manage transactions in an application that uses an application-managed entity manager:
@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 vs PersistenceContext
最佳答案
I've always thought that @PersistenceContext was for injecting EntityManager into a container-managed application, while @PersistenceUnit was for injecting an EntityManagerFactory.
没错。
我猜 JPA 教程的例子是一个粗心的错误。以前在同一部分“应用程序管理的实体管理器”中写过
To obtain an EntityManager instance, you first must obtain an EntityManagerFactory instance by injecting it into the application component by means of the javax.persistence.PersistenceUnit annotation:
@PersistenceUnit EntityManagerFactory emf;
Then obtain an EntityManager from the EntityManagerFactory instance:
EntityManager em = emf.createEntityManager();
关于java - 通过@PersitenceContext 或@PersitenceUnit 注入(inject)一个EntityManagerFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503504/
我的 webapp 包含许多 entityManagerFactories (DB)。每个都有自己独特的名称,例如 entityManagerFactoryApp、entityManagerFacto
这是来自堆栈跟踪的(底部)错误: Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory
I'm working on a basic application using Java Spring Boot, I'm stuck on this error:我正在使用Java Spri
我需要在测试之间重新创建 EntityManagerFactory,以确保我的序列在 JPA 序列生成器中重置以匹配数据库。 我需要重新创建 EMF,或者根据当前设置重新连接到数据源。 尽管 spri
我有一个使用hibernate的项目,启动时间很长,我想知道是否可以序列化EntitiyManagerFactory,这样只有第一次启动会很慢。 最佳答案 它可以在hibernate中序列化(在其他J
在查询对象和/或删除/创建时,我无法理解实体管理器的正确用法。现在,对于任何数据库事务,我有几种打开和关闭新实体管理器的服务方法,如下所示: public static Long getCountAp
我刚刚开始开发一个旨在支持现有 Web 项目的应用程序,因此业务层和持久层已经存在,并且在该 Web 应用程序中运行良好。现在,当我在控制台应用程序中使用两个层的库时,我收到一个错误,指出 JpaTr
我想要两个 EntityManagerFactories(org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean 在这种情
我使用 eclipselink 作为 JPA 的实现,我想知道是否可以检查我的 EntityManagerFactory 是否“活着” 例如,如果连接参数无效,当我创建 EMF 时我不会有任何异常,直
我正在尝试 Autowiring 对不受 Spring 管理的类的依赖关系。为此,我使用以下内容 try (ClassPathXmlApplicationContext context = new C
我是 JPA 和 hibernate 的新手。在我的网络应用程序中,我已将 JDBC 代码更改为 JPA。在运行网络应用程序时,我收到了一大堆错误。但根据我对 JPA 和 Hibernate 的了解,
我正在开发一个需要执行一些数据库操作的应用程序。 我为 EntityManagerFactory 创建了一个静态变量,并在应用程序调用的方法中对其进行了初始化 if (emf == null) {
persistence.xml 文件 org.hibernate.ejb.HibernatePersistence com...... ApplicationContext.xm
有谁知道如何手动创建一个EntityManagerFactory?当我说手动时,我的意思是让它使用一个特殊的 persistence.xml 文件?这是我尝试过的,但都失败了。 Configurati
我是 ORM 的新手。我刚开始阅读有关使用 Hibernate 的 Java Persistence API 的书籍和文档。 我只是想知道,关闭EntityManagerFactory与关闭jdbc数
我的应用无法 Autowiring entityManagerFactory。 我的applicationContext.xml: classpath:jpa-pers
因此,尝试使用JPA实现运行第一个sprinboot应用程序,并得到以下错误: Description: Field personneDAO in com.example.demo.controlle
我可以在 bean 外部从 EntityManagerFactory 创建一个 EntityManager 吗?如果是这样,我该怎么做? 最佳答案 在非托管环境中(这就是您所说的 bean 外部的意思
我正在开发一个带有 MySql 数据库、JPA 对象和 EntityManagerFactory 的 java 应用程序,并使用 EclipseLink 来管理数据库。一切正常,但我有一个问题。 我的
我的 spring 代码出现以下错误,这是由实体类之一引起的。由于 Spring/JPA 没有提供任何关于错误来源的提示,我将不得不删除每个实体,直到找到罪魁祸首。通常会给出线索,但这里的情况并非如此
我是一名优秀的程序员,十分优秀!