是否有一种简单的方法使用库来促进两个 Hibernate 实例的同步。一个在客户端本地运行,一个在通过 Web 服务公开的中央服务器上运行。
因此,客户端跟踪它所做的更改,并将它们推送到服务器。服务器确保客户端不会更新不同步的对象并存储客户端更改。
客户端还可以与服务器同步,以便它可以看到其他客户端所做的更改。
这个想法是客户端可以离线运行,无需访问服务器,并且仅在需要时才上线进行同步。
最佳答案
没有“神奇”的方法可以实现这一目标。你必须做这样的事情:
- 为每个实体创建一个
version
或lastModified
字段 - 以序列化形式(对象序列化、xml、json)发送(通过 Web 服务、rmi 或您可以使用的任何方式)本地 hibernate 实体
- 首先是新实体 - 只需将它们保留在服务器上 其次
- 删除实体 - 您必须将它们的
id
和版本
存储在某处。如果服务器上的版本没有更改,请将其删除。如果有 - 自行决定是否删除它们 - 更新了第三个实体 - 再次比较
版本
字段。如果服务器上没有任何修改,则保留新实体。如果有修改,有以下几种选择:- 报告合并冲突并且不合并它们
- 用客户端版本覆盖服务器版本
- 实现更复杂的合并机制,其中每个字段都有自己的版本,但这太复杂了
关于java - 本地运行的 hibernate 与服务器上运行的 hibernate 之间的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2242293/