-1

検索に応答してレコード データの配列をクライアントに送信するアプリケーション サーバーがあります。データをクライアントに送信する前に、サーバーにデータをセッション変数に保存させることを考えています。

ユーザーが編集するレコードを選択して送信すると、クライアントはレコード全体をサーバーに送信します。データベース内のレコード全体を更新します (他のユーザーが検索後に更新をコミットした場合)。

ただし、監査情報を適切に保存できるように、変更をキャプチャする必要があります。ユーザーが見て変化したものに基づいて、古い価値と新しい価値を捉えるのが最善だと思います。したがって、セッション データのレコードとクライアントから送信された更新されたレコードをフィールドごとに (詳細に) 比較する予定です。2 つの質問があります。

1) このアプローチに落とし穴や問題はありますか?

2) そうでない場合、オブジェクトを比較するための優れた Java ユーティリティ/ライブラリは何ですか?

よろしくお願いします。

4

2 に答える 2

1

別のユーザーがレコード内のフィールドを変更した場合は、変更を拒否した方がよい場合があります。レコードが変更されたことをユーザーに警告し、新しいデータを表示して更新を再度実行することができます (変更された値をユーザーが利用できるようにしておくこともできます)。

このようにして、別のユーザーが変更していないフィールドに関連するフィールドを変更した場合、互いに意味をなさないレコードに変更を加えることはありません。

于 2012-12-13T20:02:22.343 に答える
0

さまざまなアプローチがあります。
何らかの理由でサーバー側と応答で変更されたフィールドをマークできない場合は、リフレクションを使用してクラスのすべてのフィールドを比較します。これはプリミティブ オブジェクトであるか、少なくとも equals() をサポートしていることが望ましいです。ただし、それをプリミティブ型と文字列に制限します。

于 2012-12-13T20:04:05.617 に答える