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

标签 java hibernate orm client-server

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

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

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

这个想法是客户端可以离线运行,无需访问服务器,并且仅在需要时才上线进行同步。

最佳答案

没有“神奇”的方法可以实现这一目标。你必须做这样的事情:

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

关于java - 本地运行的 hibernate 与服务器上运行的 hibernate 之间的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2242293/

相关文章:

javascript - GWT JSNI - Java 到 Javascript 返回 Java 导致未定义的参数

java - 使用 JUnit 比较 2 个对象

java - Java 中日期的不确定行为

java - 轻度使用后,Tomcat 随机关闭并出现 AbstractProtocol 暂停

java - hibernate 查询

java - Spring Boot JAR 不作为 init.d 服务执行

java - 使用 Spring-security 进行密码加密和解密

grails - GORM域变量不属于

php - Doctrine2 - 使用外键列作为普通字段

java - ClassNotFoundException : org. ear 文件中的 jaxen.JaxenException