【问题标题】:SQL exception causes Hibernate second level cache to have stale data with Infinispan as the providerSQL 异常导致 Hibernate 二级缓存以 Infinispan 作为提供者的数据过时
【发布时间】:2011-08-18 14:59:40
【问题描述】:

我们在基于 JPA(Hibernate) 的应用程序中使用 Infinispan(使用 JGroups 集群)作为我们的二级缓存。当数据库操作失败时,我们会看到二级缓存已过时。例如:

1) 尝试使用登录名“joe”创建用户。 2) 调用persist(user); 3) 由于数据库唯一性约束,持久化失败。 4) 在 login=joe 上通过 id 进行查找(假设 login 是 PK)。 5) Hibernate 从 Infinispan 缓存返回 joe 用户,即使数据库没有它。

在这种情况下,配置 XA 事务并让 Infinispan 参与 XA 似乎有点矫枉过正。 XA 是解决这个问题的唯一方法吗?

【问题讨论】:

  • 要结束这个循环,我必须启用 XA(使用 Atomikos)以使缓存保持同步。 Manik 的解决方案不起作用。

标签: hibernate second-level-cache infinispan


【解决方案1】:

启用事务同步,比 XA 便宜很多。

更多详情请见http://infinispan.blogspot.com/2011/06/faster-infinispan-based-second-level.html

【解决方案2】:

我必须通过部署 Atomikos 来启用 XA 事务以保持缓存同步。其他解决方案无效。

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 2013-09-05
    • 1970-01-01
    • 2023-03-03
    • 2015-09-07
    • 1970-01-01
    • 2020-05-19
    • 2013-10-08
    • 2010-10-16
    相关资源
    最近更新 更多