JPA を使用するアプリケーションを作成しました (そして永続化プロバイダーとして休止状態にします)。複数のテーブルを持つデータベースで動作します。
クライアントとして機能するプログラムのコピーが同じ機能を可能にする「オフラインモード」を作成する必要がありますが、到達可能な場合はデータをサーバーと同期させます。
目的は、サーバーから「デタッチ」し、データに変更を加えてから変更をマージできるクライアントを取得することです。リビジョン管理システムに少し似ています。
ユーザーが保持するバージョンを決定する場合に備えて、競合を管理することは重要ではありません。
私の考えですが、うまくいきませんでしたが、データベースの各行に最終編集タイムスタンプを割り当てることでした。クライアントは最初にデータベース全体のコピーをダウンロードし、サーバーに接続していないときに行を変更すると、2 番目のタイムスタンプも記録します。このようにして、変更されたデータと、サーバーと同期された最後のタイムスタンプを認識します。サーバーに再接続すると、サーバーからの最後の同期以降に変更されたデータは何かを尋ね、変更されたデータを送信する必要があります。(少し単純化されていますが、競合の管理は大きな問題にはなりません)
もちろん、これは行を削除する場合には機能しません。サーバーまたはクライアントの両方が行を削除した場合、それらはそれに気付かず、もう一方は決して知りません。
解決策は、削除された行のリストを含むテーブルを維持することですが、コストが高すぎるようです。
誰かがうまくいく方法を知っていますか?すでに似たようなものがありますか?