【问题标题】:hibernate and ehcache replication休眠和 ehcache 复制
【发布时间】:2010-05-27 15:00:20
【问题描述】:

我正在研究节点之间的缓存复制解决方案

节点 A - 主节点 => Hibernate + Database + Ehcache 作为二级缓存
节点 B - 区域节点=> Ehcache 作为主缓存。没有休眠

Node B 仅用作查询的附近缓存。

现在我正在更新节点 A 中的数据(比如 SudentInfo),它会正确地持久化和缓存。在复制方面(我正在使用 JMS)它向节点 B 发送一条消息。但问题是,它发送的消息是实例 CacheEntry(deep Inside Element),没有办法恢复原始对象(StudentInfo)。我在节点 B 中得到的是 CacheEntry,它具有一些学生属性,但实际上不是学生对象。

请注意,我不需要节点 B 中的 Hibernate 会话/持久性,节点 B 仅用于快速查询,持久性是通过节点 A 完成的。 那么有没有人尝试过这样的解决方案? 有没有办法将 CacheEntry 转换为实际对象? 或告诉 ehcache 复制原始对象而不是 CacheEntry。

感谢您的帮助

【问题讨论】:

    标签: hibernate replication ehcache


    【解决方案1】:

    “Ehcache 作为二级缓存”是什么意思?作为二级缓存?

    因为如果是这样,那么被复制的对象就不是对象,而是 Hibernate 用来存储对象的数据,它本质上等同于存储在数据库中的行级数据。

    看看这篇文章,它解释了二级缓存中的内容: Truly Understanding the Hibernate Second-Level cache and Query cache

    我的问题是——为什么不配置节点 B 与数据库通信——那么你就有了同构设置。如果缓存碰巧起作用了——那么很好,你得到缓存的值并且不命中数据库——如果没有,你就命中了数据库。

    除非有一些拓扑原因,否则您不能这样做 - 在我看来,使用相同的配置/设置运行两个节点会容易得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 2011-07-13
      • 2017-08-12
      • 2011-07-18
      • 1970-01-01
      • 2010-09-08
      相关资源
      最近更新 更多