hibernate和ehcache复制

hibernate和ehcache复制,hibernate,replication,ehcache,Hibernate,Replication,Ehcache,我正在开发节点之间的缓存复制解决方案 节点A-主节点=>Hibernate+数据库+Ehcache作为辅助缓存 节点B-区域节点=>Ehcache作为主缓存。无休眠 节点B仅在缓存附近用于查询 现在我正在更新节点A中的数据(比如SudentInfo),它将被正确地持久化和缓存。在复制端(我使用的是JMS),它向节点B发送一条消息。但问题是,它发送的消息是实例CacheEntry(元素的深处),无法恢复原始对象(StudentInfo)。我在节点B中得到的是CacheEntry,它具有一些Stud

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

节点A-主节点=>Hibernate+数据库+Ehcache作为辅助缓存
节点B-区域节点=>Ehcache作为主缓存。无休眠

节点B仅在缓存附近用于查询

现在我正在更新节点A中的数据(比如SudentInfo),它将被正确地持久化和缓存。在复制端(我使用的是JMS),它向节点B发送一条消息。但问题是,它发送的消息是实例CacheEntry(元素的深处),无法恢复原始对象(StudentInfo)。我在节点B中得到的是CacheEntry,它具有一些Student属性,但实际上不是Student对象

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

感谢您的帮助

什么是“Ehcache as secondary cache”?作为二级缓存

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

看看这篇文章,它解释了二级缓存中的内容:

我的问题是-为什么将节点B配置为与数据库对话-然后您就有了一个同角度的设置。如果缓存正好工作,那么很好,你得到了缓存的值,并且没有命中数据库,如果没有,你命中数据库

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