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