0

我编写了一个使用 JPA(和 hibernate 作为持久性提供者)的应用程序。它适用于具有多个表的数据库。

我需要创建一个“离线模式”,其中充当客户端的程序副本允许相同的功能,同时在可访问时保持其数据与服务器同步。

目的是获得一个可以从服务器“分离”的客户端,对数据进行更改,然后将更改合并回来。有点像修订控制系统。

管理冲突并不重要,以防用户决定保留哪个版本。

我的想法,但它行不通,是为数据库中的每一行分配最后一个编辑时间戳。客户端最初下载整个数据库的副本,并且在未连接到服务器时修改行时还记录第二个时间戳。通过这种方式,它知道哪些数据发生了变化,以及它与服务器同步的最后一个时间戳。当您重新连接到服务器时,他将不得不询问自上次从服务器同步以来已更改的数据是什么,并发送已更改的数据。(稍微简化了一点,但冲突的管理应该问题不大)

当然,这在删除行的情况下不起作用。如果服务器或客户端都删除了一行,他们不会注意到它,而另一个永远不会知道。

解决方案是维护一个包含已删除行列表的表,但这似乎太昂贵了。

有谁知道一种有效的方法?已经有类似的东西了?

4

1 回答 1

0

恩维尔:

如果您想有一个简单的解决方案,您可以创建类似于“时间戳”的版本字段。

审计:

如果你想拥有一个复杂、强大的解决方案,你应该使用 Hibernateplugin

于 2012-08-13T14:53:39.810 回答