| 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 |
楽観的ロックでバージョン番号が更新されている場合に発生する例外。
|