通过@PersitenceContext或@PersitenceUnit注入EntityManagerFactory?

2024-04-19

我一直认为@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#


我一直认为@PersistenceContext用于将EntityManager注入到容器管理的应用程序中,而@PersistenceUnit用于注入EntityManagerFactory。

这是真的。

我猜想 JPA 教程的例子是一个粗心的错误。之前在同一部分“应用程序管理的实体管理器”中写道

要获取 EntityManager 实例,首先必须通过 javax.persistence.PersistenceUnit 注解将其注入到应用程序组件中来获取 EntityManagerFactory 实例:

@PersistenceUnit EntityManagerFactory emf;

然后从EntityManagerFactory实例中获取EntityManager:

EntityManager em = emf.createEntityManager();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过@PersitenceContext或@PersitenceUnit注入EntityManagerFactory? 的相关文章

随机推荐

  • Git - 进一步重新合并

    合并与变基的主要缺点是合并会导致树混乱 如果 master 经常被更新 那么每次有重大更新时合并 mastery 将创建大量不必要的提交 现在 大多数时候 实际上没有任何必要 考虑存储库如下 Master A B C D E Branch
  • Gitlab代码审查批量评论?

    在Gitlab中进行代码审查时是否可以获取批量注释 与 Phabricator 类似 当审阅者对您的代码进行多条评论时 您只会收到一封电子邮件 我们正在尝试在工作中使用 Gitlab 但感觉每条评论的单独电子邮件都像垃圾邮件一样 Thank
  • 启动服务的小部件也会启动主要活动

    我有一个应该启动和停止服务的小部件 在不运行时启动它 在运行时停止它 这工作正常 但是 每次启动服务时 我的应用程序的主要活动也会启动 这是我不想要的 如果我删除 MAIN intent filter
  • 如何在 Laravel 4 中注册命名空间

    问题 PostController php 中第 4 行未找到类 PostRepostioryInterface 或者在修改命名空间时我什至得到了类 找不到应用 模型 接口 PostRepositoryInterface 问题 如何在 la
  • C# - 优雅的列表分区方式?

    我想通过指定每个分区中的元素数量将列表分区为列表列表 例如 假设我有列表 1 2 11 并且希望对其进行分区 使每个集合都有 4 个元素 最后一个集合填充尽可能多的元素 生成的分区将类似于 1 4 5 8 9 11 怎样写才是优雅的方式呢
  • 将通用列表转换为特定类型

    我有一个包含一些值的列表 Example List testData new List testData Add new List aaa bbb ccc testData Add new List ddd eee fff testData
  • 触发器 - 是否有必要 BEGIN / COMMIT TRAN

    我想像这样创建 INSTEAD OF 触发器 CREATE TRIGGER dbo DeleteCompany ON dbo Company INSTEAD OF DELETE AS DECLARE CompanyID int SELECT
  • FacebookRequest::execute() 未包含在 facebook sdk 中

    下载后facebook 的 php sdk https github com facebook facebook php sdk v4 archive 5 0 0 zip我试图运行下列的 https developers facebook
  • 类“属性”与“成员”与“变量”与“字段”的术语[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 似乎开发人员在引用存储在类实例中的数据时经常互换使用这些术语 每个术语之间是否存在技术差异 或者可以互换使用它们吗 根据不同的答案 类
  • 为什么带有子模块和名称冲突的函数的模块可以工作?

    这是我想知道的代码 mod a pub mod b pub fn b println b pub use self b b use a b fn main b b b 为什么b b 工作 模块不应该吗b和函数b冲突 这是否意味着a b不知何
  • 如何在 igraph R 中创建自循环?

    如何添加self loop除了改变之外的图表Adjacency matrix这正在改变c i i 1 有没有一个函数可以做到这一点igraph R包裹 Edit 图形创建 network read csv file choose netwo
  • pyaudio 可以同时演奏两个音符吗?

    可以使用 pyaudio 演奏和弦吗 当然 只需生成结果并将其传递给玩家即可 本文介绍了一种实现此目的的方法 http davywybiral blogspot com br 2010 09 procedural music with py
  • FMDB ios 没有这个表

    我正在做的 sqlite 项目有问题 我正在使用 FMDB 我遵循一个简单的示例 但不起作用 而且我找不到错误 我从终端创建了数据库模式 并在上面放置了一些数据 我对 ios 开发非常陌生 所以我不知道我是否正确执行了这些步骤 这就是我所做
  • Tkinter - 窗口焦点丢失事件

    是否有事件触发tkinter窗口失去可以绑定到的焦点tkinter窗口使用 bind method 您正在寻找的活动是
  • r 中的循环问题: if (length[i] == 1) { 中的错误:缺少 TRUE/FALSE 需要的值

    ann lt 1 2500 len lt sample 1 3 1000 replace TRUE df lt data frame col1 c 1 2500 col2 c 1 2500 for i in 1 length ann if
  • 运行包含 Pipes 的命令行并将结果显示到 STDOUT

    如何从 Python 调用包含管道的 shell 命令并捕获输出 假设命令类似于 cat file log tail 1 我想做的 Perl 等效项是这样的 my string cat file log tail 1 使用 subproce
  • 构建 nspredicate 时的 EXC_BAD_ACCESS

    我正在计算生日和今天之间的月数 利用这个数字 我正在构建一个谓词来从核心数据中获取对象 尽管月数计算正确 如日志所示 但在构建谓词时我得到了 EXC BAD ACCESS 这是我的代码 NSCalendar gregorian NSCale
  • 隐藏网站文件夹/目录文件的最佳方法是什么[重复]

    这个问题在这里已经有答案了 如果我通过 www mysite com img 访问我的网站 我会看到以下内容 父目录 folder1 folder2 file1 file2 等等等等 但什么是best如何阻止人们访问我的网站文件夹和文件结构
  • 处理负整数的汇编 MASM

    我被指示用汇编语言编写一个程序 该程序将执行以下算术 A B C D A E 当没有负值发挥作用时 我成功地做到了这一点 但假设 A 5 B 4 C 3 D 2 和 E 1 这给了我们 5 4 3 2 5 1 或 6 这就是我需要帮助的地方
  • 通过@PersitenceContext或@PersitenceUnit注入EntityManagerFactory?

    我一直认为 PersistenceContext用于将EntityManager注入到容器管理的应用程序中 而 PersistenceUnit用于注入EntityManagerFactory Javadoc 说 对于持久性单元 http d