【问题标题】:Infinispan transactions with @Transactional使用 @Transactional 的 Infinispan 交易
【发布时间】:2020-05-20 15:07:08
【问题描述】:

我正在考虑使用 Infinispan 作为 Wildfly 中关系数据库的替代品。

CDI 支持@Transactional 注释。通常,我将@Transactional 放在方法级别,仅用于与 JPA 相关的事务。 infinispan 将使用@Transactional(及其Java Transaction API)。还是@Transactional 仅适用于 JPA?

【问题讨论】:

    标签: jakarta-ee wildfly infinispan


    【解决方案1】:

    是的,Infinispan 支持JTA,CDI 也支持JTA,所以当CDI 的事务拦截器执行时,它会使用事务管理器并创建一个事务。如果您的 Infinispan 缓存已配置此事务管理器,则资源将被登记/同步到事务。

    您需要像文档中所说的那样为 Infinispan 配置一个 TransactionManager(Infinispan 附带了几个可以提供帮助的事务管理器查找类)。欲了解更多信息:(Infinispan doc reference)。

    请记住,如果您希望在同一个事务中混合多个资源(如数据库和缓存)并且希望在单个事务中执行此操作,Infinispan 也支持分布式事务,因此您可以配置 XA 事务(在如果您的数据库或其他资源也必须支持 XA)。更多相关信息:Infinispan doc reference 2Infinispan doc reference 3

    【讨论】:

    • 我不需要 XA 支持:我将删除我的“MySql”并将其替换为“Infinispan”,这是我的主要和唯一数据库。我只需要一个 infinispan-node,这样我就可以在嵌入模式下运行它。 Infinispan 通过其缓存存储 提供“本机持久性”。我想我必须使用 REPEATABLE_READ。我希望,在我用 Infinispan 替换关系数据库之后,我不会得到任何负面的惊喜……例如,关于 ACID 或存储稳定性。如果您可以分享一些有关从关系数据库切换到 infinispan 的绊脚石的信息或链接,请告诉我。谢谢!
    • 嗨,nemo,我从来没有这样做过,所以我无法帮助你,我通常使用 Infinispan 来缓解数据库访问,并将共享数据存储在内存中。
    猜你喜欢
    • 1970-01-01
    • 2019-10-11
    • 2011-01-21
    • 2023-03-22
    • 2018-12-20
    • 1970-01-01
    • 2021-05-30
    • 2020-09-30
    • 2023-03-13
    相关资源
    最近更新 更多