0

DTO で Hibernate を使用するための設計上の質問。

エンティティの 1 つで、楽観的ロックと @Version アノテーションを使用します。現在の問題は、マージ時にそのバージョン番号がポスト フラッシュまで更新されないことです。これは、DTO 変換プロセスの外部で発生することを意味します。変換された DTO を古いバージョン番号でクライアントに送り返すことになります。Hibernate が異なる db バージョン番号をチェックするため、これ以降の操作で楽観的ロックの失敗が発生するようになりました。

ThreadLocal コンテナーとイベント リスナーの使用を含むいくつかのハックでこれを修正することができましたが、ビジネス/クライアント DTO を使用するときにシステム ポスト フラッシュによって更新されるプロパティを処理する方法について、受け入れられているベスト プラクティスがあるかどうか疑問に思います。

任意のアイデアや考えをいただければ幸いです, ありがとう, シャンズ

4

1 に答える 1

0

エンティティが多数のクライアントによって同時に更新される場合。クライアントビューで最新バージョンを維持する必要があります。変更を加えたときに更新する必要があります(更新後に再読み込みします)。

エンティティがその所有者によってのみ更新される場合 (同時に複数のユーザーではありません)。最新バージョンのプロパティを保持する必要はありません。サーバー側で更新を行う場合。保存されたエンティティをロードし、DTO で更新する必要があるプロパティを設定できます。ロードされた PO は、トランザクション内で自動的に更新できます。

于 2013-03-11T16:44:34.473 に答える