Interface | Description |
---|---|
ExclusiveControlManager |
排他制御(悲観的ロック、楽観的ロック)を管理するインタフェース。
排他制御用テーブルを使用した排他制御(悲観的ロック、楽観的ロック)を行うための機能、
及び排他制御用テーブルに対する行データの追加と削除を行う機能を提供する。
排他制御用テーブルは、排他制御の対象に含めるテーブルの範囲を決めた上で、
親となるテーブルを決定し排他制御用テーブルとする。
排他制御用テーブルには、バージョン番号をカラムを定義する。
悲観的ロックは、
ExclusiveControlManager.updateVersion(ExclusiveControlContext) メソッドにより、
処理の開始時にバージョン番号を更新することでロックを実現する。
トランザクションがコミット又はロールバックされるまで、ロックが維持される。
楽観的ロックは、ExclusiveControlManager.getVersion(ExclusiveControlContext) メソッドでバージョン番号を取得しておき、
ExclusiveControlManager.checkVersions(List) 、ExclusiveControlManager.updateVersionsWithCheck(List) メソッドにより、
取得したバージョン番号が更新されていないかをチェックすることで実現する。 |
Class | Description |
---|---|
ExclusiveControlContext |
排他制御の実行に必要な情報を保持するクラス。
排他制御用テーブルのスキーマ情報と排他制御対象のデータを指定する主キー条件を保持する。
|
ExclusiveControlUtil |
排他制御機能のユーティリティクラス。
排他制御用テーブルの操作は、
ExclusiveControlManager に委譲する。
本クラスで使用するExclusiveControlManager のオブジェクトは
SystemRepository から"exclusiveControlManager"という名前で取得する。
UniversalDao を使用する場合には、
このクラスではなくUniversalDao を使用して排他制御を行うこと。 |
Version |
排他制御用テーブルのバージョン番号を保持するクラス。
|
Exception | Description |
---|---|
OptimisticLockException |
楽観的ロックでバージョン番号が更新されている場合に発生する例外。
|