@Published(tag="architect") public interface ExclusiveControlManager
排他制御用テーブルを使用した排他制御(悲観的ロック、楽観的ロック)を行うための機能、 及び排他制御用テーブルに対する行データの追加と削除を行う機能を提供する。
排他制御用テーブルは、排他制御の対象に含めるテーブルの範囲を決めた上で、 親となるテーブルを決定し排他制御用テーブルとする。 排他制御用テーブルには、バージョン番号をカラムを定義する。
悲観的ロックは、updateVersion(ExclusiveControlContext)
メソッドにより、
処理の開始時にバージョン番号を更新することでロックを実現する。
トランザクションがコミット又はロールバックされるまで、ロックが維持される。
楽観的ロックは、getVersion(ExclusiveControlContext)
メソッドでバージョン番号を取得しておき、
checkVersions(List)
、updateVersionsWithCheck(List)
メソッドにより、
取得したバージョン番号が更新されていないかをチェックすることで実現する。
修飾子とタイプ | メソッドと説明 |
---|---|
void |
addVersion(ExclusiveControlContext context)
バージョン番号を追加する。
|
void |
checkVersions(java.util.List<Version> versions)
バージョン番号が更新されていないかチェックする。
|
Version |
getVersion(ExclusiveControlContext context)
バージョン番号を取得する。
|
void |
removeVersion(ExclusiveControlContext context)
バージョン番号を削除する。
|
void |
updateVersion(ExclusiveControlContext context)
バージョン番号を更新する。
|
void |
updateVersionsWithCheck(java.util.List<Version> versions)
バージョン番号の更新チェックとバージョン番号の更新を行う。
|
Version getVersion(ExclusiveControlContext context)
context
- 排他制御コンテキストvoid checkVersions(java.util.List<Version> versions) throws OptimisticLockException
versions
- バージョン番号OptimisticLockException
- バージョン番号が更新されていた場合void updateVersionsWithCheck(java.util.List<Version> versions) throws OptimisticLockException
versions
- バージョン番号OptimisticLockException
- バージョン番号が更新されていた場合void updateVersion(ExclusiveControlContext context)
context
- 排他制御コンテキストvoid addVersion(ExclusiveControlContext context)
context
- 排他制御コンテキストvoid removeVersion(ExclusiveControlContext context)
context
- 排他制御コンテキスト