gpt4 book ai didi

java - JPA - 持久化对象时何时使用 getTransaction()

转载 作者:IT老高 更新时间:2023-10-28 21:12:55 26 4
gpt4 key购买 nike

我最近开始在 Google App Engine 上使用 JPA。在阅读一些示例时,我注意到对象的持久化方式存在一些变化。在一种情况下,我见过这样的事情:

entityManager.getTransaction().begin();
entityManager.persist(object);
entityManager.getTransaction().commit();

在其他情况下,我看不到 getTransaction() 的使用。我只是看到 entityManager.persist(object)。什么时候适合使用 getTransaction()

最佳答案

如果您使用容器管理的 EntityManager,那么您使用的是 JTA 事务。因此,您不需要(更准确地说 - 您不能)干扰使用 entityManager.getTransaction() 获取的 EntityManager 事务。 JTA 启动并提交您的事务。

如果您使用应用程序管理的 EntityManager 并且您不想参与 JTA 事务,那么您需要自己管理它们(称为资源本地实体管理器)。

大多数情况下,与 EntityManager.getTransaction() 一起使用的应用程序管理的 EntityManager 用于 Java SE 环境。

编辑:您可能对 JPA 2.0 specification 中的 7.5 控制交易 部分感兴趣.

关于java - JPA - 持久化对象时何时使用 getTransaction(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8464370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com