在本地和服务器上运行的hibernate之间的同步

时间:2010-02-11 04:35:36

标签: java hibernate orm client-server

是否有一种简单的方法可以使用库来促进两个hibernate实例的同步。一个在客户端本地运行,另一个在通过Web服务公开的中央服务器上运行。

因此,客户端跟踪它所做的更改,将它们推送到服务器。服务器确保客户端不会更新不同步对象并存储客户端更改。

客户端还可以与服务器同步,以便它可以看到其他客户端所做的更改。

这个想法是客户端可以脱机运行,无需访问服务器,只在必要时才联机进行同步。

2 个答案:

答案 0 :(得分:1)

没有“神奇”的方法来实现它。你必须做这样的事情:

  • 为每个实体制作versionlastModified字段
  • 以序列化形式(对象序列化,xml,json)发送(通过web-services,rmi或其他任何东西)本地hibernate实体
  • 首先
  • 实体 - 只是将它们保留在服务器上
  • 已删除实体 - 您必须将其存储在idversion的某个位置。如果服务器上的版本尚未更改,请将其删除。如果有 - 自己决定是否删除它们
  • 更新实体第三 - 再次比较version字段。如果服务器上没有修改,则保留新实体。如果有修改,有几个选项:
    • 报告合并冲突并且不合并它们
    • 使用客户端
    • 覆盖服务器版本
    • 实现更复杂的合并机制,其中每个字段都有自己的版本,但这太复杂了

答案 1 :(得分:0)

我不确定能得到所有东西,但可以暂时断开连接的客户并不容易处理。这样的客户端通常需要嵌入式数据库,这意味着在重新联机时与主数据库同步和/或合并,这实际上远非一个简单的过程。所以,为了回答你最初的问题,我很害怕没有简单的方法来实现这个目标。

相关问题