フィールド・ロック・ポリシーの使用
次のTopLinkに含まれているロック・ポリシーでは追加フィールドが不要です。
- AllFieldsLockingPolicy
- ChangedFieldsLockingPolicy
- SelectedFieldsLockingPolicy
これらのすべてのポリシーでは、特定のマップされた以前の値の現在値が比較されます。これらのポリシーの使用時は、データベースの更新にUnitOfWorkを使用する必要があります。各ポリシーはフィールドの比較を、ポリシーで定義されている特定の方法で処理します。
- AllFieldsLockingPolicyを使用するオブジェクトが更新または削除されたときは常に、その表内のすべてのフィールドがwhere句で比較されます。その表内の値が、オブジェクトが読み取られたときから変更されている場合は、更新または削除が失敗します。
注意: この比較は表単位でのみ行われます。複数表にマップされているオブジェクト(複数表継承)で更新が実行される場合は、変更された表のみがwhere句に表れます。
- ChangedFieldsLockingPolicyを使用するオブジェクトが更新されたときは常に、変更されたフィールドのみが比較されます。これによって複数のクライアントが、同じ行の異なる部分を失敗せずに変更することが可能です。このポリシーを使用すると、削除は主キーのみで比較されます。
- SelectedFieldsLockingPolicyを使用するオブジェクトが更新または削除されたときは常に、選択したフィールドのリストが文で比較されます。これらのフィールドの更新は、アプリケーションによって手動で行うか、イベントを介して行います。
オプティミスティック・ロックが違反されたために更新が失敗したときは常に、OptimisticLockExceptionがスローされます。これはデータベース修正の実行時にアプリケーションで処理する必要があります。アプリケーションはオブジェクトをリフレッシュし、その変更を再適用します。
関連項目
TopLinkディスクリプタについて
バージョン・ロック・ポリシーの使用
詳細オプティミスティック・ロック・ポリシーの指定
オプティミスティック・ロックの使用
ディスクリプタの使用
Copyright © 1997, 2004, Oracle.
All rights reserved.