0

私は最初GWT-Applicationに書いており、あなたのアドバイスが必要です。休止状態による楽観的ロックに使用されるバージョン列を再利用できるデータベース エンティティのロケータの実装に問題はありませんが、エンティティの 1 つがldap-Object. Locatorのメソッドが何に使用されるか、また LDAP オブジェクトの読み取りと書き込みを行うgetVersion()ためにこのメソッドを実装する方法を教えてください。ldap-Object?

4

2 に答える 2

2

GWTのドキュメントから、getVersionメソッドは

エンティティが変更されたかどうかを推測するために RequestFactory によって使用されます。バッキング ストア (JDO、JPA など) は、オブジェクトが永続化されるたびにバージョンを更新する責任があり、RequestFactory は getVersion() を呼び出して変更を認識します。この情報は 2 つの場所で使用されます。まず、サーバー上でのメソッド呼び出しの結果としてエンティティが変更された場合、たとえば、編集可能なエンティティを永続化するための呼び出しによってサーバー上で更新されたバージョンが生成された場合、RequestFactoryServlet はクライアントに UPDATE イベントを送信します。次に、クライアントは最近見たエンティティのバージョン キャッシュを維持します。バージョンが変更されたエンティティを検出すると、リスナーがビューを更新できるように、イベント バスで UPDATE イベントを発生させます。

多くの永続化フレームワークは汎用の検索/取得/クエリ メソッドを提供するため、汎用の Locator クラスを作成し、エンティティ タイプごとに @ProxyFor アノテーションで指定することもできます。これを行うために、すべてのエンティティは、getId() および getVersion() を提供する基本クラスを拡張できます。あるいは、ジェネリック Locator はリフレクションを使用して、必要に応じて getId() および getVersion() を呼び出すことができます。

これ以外に何かを探しているかどうかはわかりません。

于 2013-01-12T13:56:47.930 に答える
0

私も同じ問題を抱えてる。私が最初に考えたのは、属性modifyTimestampとcreateTimestampを使用することでした。ただし、機能的なギャップはまだあります。これらのタイムスタンプの最小単位は秒であるため、同じ秒の変化を検出することはできません。別の解決策は、LDAPオブジェクトのすべての属性に対して一種のチェックサムを使用することです。とても素敵ではありません..

于 2013-01-29T19:59:04.310 に答える