Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 本地运行的hibernate与服务器上运行的hibernate之间的同步_Java_Hibernate_Orm_Client Server - Fatal编程技术网

Java 本地运行的hibernate与服务器上运行的hibernate之间的同步

Java 本地运行的hibernate与服务器上运行的hibernate之间的同步,java,hibernate,orm,client-server,Java,Hibernate,Orm,Client Server,有没有一种简单的方法可以使用库来促进两个hibernate实例的同步。一个运行在本地客户机上,另一个运行在通过web服务公开的中央服务器上 因此,客户端跟踪它所做的更改,并将其推送到服务器。服务器确保客户端不会更新不同步的对象,并存储客户端更改 客户端还可以与服务器同步,以便查看其他客户端所做的更改 其思想是,客户端可以脱机运行,不需要访问服务器,并且只有在需要时才能联机进行同步。我不确定是否能够获得所有信息,但可以暂时断开连接的客户端并不容易处理。这类客户机通常需要一个嵌入式数据库,这意味着在

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

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

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


其思想是,客户端可以脱机运行,不需要访问服务器,并且只有在需要时才能联机进行同步。

我不确定是否能够获得所有信息,但可以暂时断开连接的客户端并不容易处理。这类客户机通常需要一个嵌入式数据库,这意味着在重新联机时与主数据库进行同步和/或合并,而这绝不是一个简单的过程。所以,为了回答你最初的问题,我很抱歉没有简单的方法来实现这一点。

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

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

感谢您的回答@pascal thivent,请问从哪里开始?