0

JPA を使用するアプリケーションを作成しました (そして永続化プロバイダーとして休止状態にします)。複数のテーブルを持つデータベースで動作します。

クライアントとして機能するプログラムのコピーが同じ機能を可能にする「オフラインモード」を作成する必要がありますが、到達可能な場合はデータをサーバーと同期させます。

目的は、サーバーから「デタッチ」し、データに変更を加えてから変更をマージできるクライアントを取得することです。リビジョン管理システムに少し似ています。

ユーザーが保持するバージョンを決定する場合に備えて、競合を管理することは重要ではありません。

私の考えですが、うまくいきませんでしたが、データベースの各行に最終編集タイムスタンプを割り当てることでした。クライアントは最初にデータベース全体のコピーをダウンロードし、サーバーに接続していないときに行を変更すると、2 番目のタイムスタンプも記録します。このようにして、変更されたデータと、サーバーと同期された最後のタイムスタンプを認識します。サーバーに再接続すると、サーバーからの最後の同期以降に変更されたデータは何かを尋ね、変更されたデータを送信する必要があります。(少し単純化されていますが、競合の管理は大きな問題にはなりません)

もちろん、これは行を削除する場合には機能しません。サーバーまたはクライアントの両方が行を削除した場合、それらはそれに気付かず、もう一方は決して知りません。

解決策は、削除された行のリストを含むテーブルを維持することですが、コストが高すぎるようです。

誰かがうまくいく方法を知っていますか?すでに似たようなものがありますか?

4

1 に答える 1

0

エンバー:

簡単な解決策が必要な場合は、「タイムスタンプ」のように機能するバージョンフィールドを作成できます。

監査:

複雑で強力なソリューションが必要な場合は、 Hibernatepluginを使用する必要があります

于 2012-08-13T14:53:39.810 に答える