Java 本地运行的hibernate与服务器上运行的hibernate之间的同步
有没有一种简单的方法可以使用库来促进两个hibernate实例的同步。一个运行在本地客户机上,另一个运行在通过web服务公开的中央服务器上 因此,客户端跟踪它所做的更改,并将其推送到服务器。服务器确保客户端不会更新不同步的对象,并存储客户端更改 客户端还可以与服务器同步,以便查看其他客户端所做的更改Java 本地运行的hibernate与服务器上运行的hibernate之间的同步,java,hibernate,orm,client-server,Java,Hibernate,Orm,Client Server,有没有一种简单的方法可以使用库来促进两个hibernate实例的同步。一个运行在本地客户机上,另一个运行在通过web服务公开的中央服务器上 因此,客户端跟踪它所做的更改,并将其推送到服务器。服务器确保客户端不会更新不同步的对象,并存储客户端更改 客户端还可以与服务器同步,以便查看其他客户端所做的更改 其思想是,客户端可以脱机运行,不需要访问服务器,并且只有在需要时才能联机进行同步。我不确定是否能够获得所有信息,但可以暂时断开连接的客户端并不容易处理。这类客户机通常需要一个嵌入式数据库,这意味着在
其思想是,客户端可以脱机运行,不需要访问服务器,并且只有在需要时才能联机进行同步。我不确定是否能够获得所有信息,但可以暂时断开连接的客户端并不容易处理。这类客户机通常需要一个嵌入式数据库,这意味着在重新联机时与主数据库进行同步和/或合并,而这绝不是一个简单的过程。所以,为了回答你最初的问题,我很抱歉没有简单的方法来实现这一点。没有“神奇”的方法来实现这一点。你必须这样做:
- 为每个实体创建
或版本
字段上次修改
- 以序列化形式(对象序列化、xml、json)发送(通过web服务、rmi或任何您可以使用的方式)本地hibernate实体
- 首先是新实体-只需将它们持久化到服务器上即可
- 其次是已删除的实体-您必须将其
s和id
存储在某个位置。如果服务器上的版本尚未更改,请将其删除。如果已删除,请自行决定是否删除它们version
- 第三次更新实体-再次比较
字段。如果服务器上没有修改,则保留新实体。如果进行了修改,则有几个选项:版本
- 报告合并冲突,不合并它们
- 使用客户端的版本覆盖服务器版本
- 实现更复杂的合并机制,每个字段都有自己的版本,但这太复杂了