【问题标题】:JPA multiple persistence persistence units and JTA transactionJPA 多个持久化持久化单元和 JTA 事务
【发布时间】:2017-02-17 13:36:04
【问题描述】:

我有一个 OSGi 项目,其中包含多个包含 JPA 模型类以及相应的 persistence.xml 的包。所有 PU 都使用 JTA 作为其事务类型,并连接到同一个数据库(它们使用同一个 DataSource)。

在操作实体时,我使用不同的 EntityManager,只要我使用 XADataSource,一切都可以正常工作。我现在的想法是,由于它们使用相同的数据库和相同的事务管理器,因此不需要 XA 事务。虽然如果我切换到普通的 DataSource,我会开始看到回滚时的不一致。

我查看了规格,但找不到与此相关的任何内容。有没有人知道在这种设置中是否需要 XA 事务?

谢谢, 菲利普

【问题讨论】:

    标签: java jpa transactions osgi


    【解决方案1】:

    如果您使用不同的持久性单元,那么每个持久性单元都会有自己的数据库连接。因此,即使您使用相同的 DataSource,它们也不会使用相同的事务。所以我认为这就是你在回滚期间可能会遇到问题的原因。

    在 jta 中,事务可以跨越不同的连接,所以它可以工作。

    【讨论】:

    • 谢谢,这听起来很合理。很高兴在记录的官方规范中的某个地方看到这一点。让这些东西在 OSGi 中工作总是很困难,所以你永远不知道这是由于设置还是应该以这种方式工作:)
    • OSGi 中jpa 和jta 的话题确实相当复杂(部分原因是OSGi)。不知道如何改进这一点,因为要考虑的事情太多了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多