【问题标题】:Stand-alone JPA and entityManager独立的 JPA 和 entityManager
【发布时间】:2015-02-02 09:54:07
【问题描述】:

我发现是这样的:

  • 1 “如果 JPA 单独使用,您可以使用 EntityTransaction 自行划分事务。”
  • 2 “如果 JPA 在与 JTA 集成的托管环境中使用,则使用 UserTransaction”

我的问题是:

  • 1 JPA 单独使用到底是什么意思(也就是说没有像 Java EE 或 Spring 这样的容器这样的管理环境)?
  • 2 什么是事务分界?
  • 3 spring 可以负责管理 JPA(Spring 也是一个容器,所以我们可以认为 Spring 是一个托管环境)吗?

【问题讨论】:

    标签: spring jpa transactions jta


    【解决方案1】:

    答案:

    1. 独立意味着更多的东西,例如:您通过自己的 EntityManager 实例创建(而不是它们未注入),您自己开始和提交事务,您负责传播事务(哪个代码(例如不同的服务)在哪个事务中执行)。

    2. 事务划分是您开始、传播和结束事务的方式。如果您使用托管环境(使用 JTA),那么您可以以某种方式注释服务方法并控制不同服务调用之间“事务传播”的方式。说:只有注释你可以决定在调用PersService.addPerson(Person person)时自动开始一个事务T1,并且在AddressService.saveAddress(Address address)中执行的代码(从addPerson()调用)在同一个事务T1中执行(或者如果你愿意,一个新事务 T2)。同样使用 JTA,不同的数据库可以在同一个事务中工作。

    3. 是的,Spring 可以并且几乎总是配置为作为托管环境工作。但它也可以配置为在独立模式下工作。其他已知的托管环境是 Java EE 环境(WildFly 或 Glassfish 等应用服务器)。

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 1970-01-01
      • 2013-07-25
      • 2016-06-07
      • 2013-05-06
      • 1970-01-01
      • 2023-03-23
      • 2018-01-20
      • 2015-02-22
      相关资源
      最近更新 更多