@Inject和@PersistenceContext有什么区别?
2022-09-04 02:52:29
在使用JPA的项目中,我通常使用
@Inject EntityManager em;
为了得到这样的对象。我看到网络上的许多代码片段都使用:
@PersistenceContext EntityManager em;
这些选项之间有什么区别?
我的代码在JBoss EAP 6.1和Hibernate上运行。
在使用JPA的项目中,我通常使用
@Inject EntityManager em;
为了得到这样的对象。我看到网络上的许多代码片段都使用:
@PersistenceContext EntityManager em;
这些选项之间有什么区别?
我的代码在JBoss EAP 6.1和Hibernate上运行。
@PersistenceContext
是声明对容器管理的实体管理器的依赖关系的特定批注。它允许您指定更多参数,如持久性类型。如果要在有状态会话 Bean 的整个生命周期中维护持久性上下文,将持久性类型设置为 EXTENDED 非常重要。 是一个 JPA 注释。@PersistenceContext
@Inject
是 CDI 注释。它非常通用,可用于注入各种对象。
@PersistenceContext是一个非常具体的注释,它说的是“为这个字段注入一个持久性上下文”。不能在托管上下文之外使用它。
另一方面,@Inject是非常通用的。它说,“你应该注入这个领域。它不一定适用于持久性上下文,而是要定义为注入的任何内容。
这篇文章(不完全是你所问的苹果对苹果)可能会为你提供更多的信息。
如果您想直接了解@Inject的来源,可以在此处阅读规范:
@Inject,标识可以注入对 Java 类或接口的依赖关系的点。然后,容器提供所需的资源。在此示例中,Login Bean 指定了两个注入点。