Interface ExclusiveControlManager

All Known Implementing Classes:
BasicExclusiveControlManager

@Published(tag="architect") public interface ExclusiveControlManager
排他制御(悲観的ロック、楽観的ロック)を管理するインタフェース。

排他制御用テーブルを使用した排他制御(悲観的ロック、楽観的ロック)を行うための機能、 及び排他制御用テーブルに対する行データの追加と削除を行う機能を提供する。

排他制御用テーブルは、排他制御の対象に含めるテーブルの範囲を決めた上で、 親となるテーブルを決定し排他制御用テーブルとする。 排他制御用テーブルには、バージョン番号をカラムを定義する。

悲観的ロックは、updateVersion(ExclusiveControlContext)メソッドにより、 処理の開始時にバージョン番号を更新することでロックを実現する。 トランザクションがコミット又はロールバックされるまで、ロックが維持される。

楽観的ロックは、getVersion(ExclusiveControlContext)メソッドでバージョン番号を取得しておき、 checkVersions(List)updateVersionsWithCheck(List)メソッドにより、 取得したバージョン番号が更新されていないかをチェックすることで実現する。

Author:
Kiyohito Itoh
  • Method Details

    • getVersion

      Version getVersion(ExclusiveControlContext context)
      バージョン番号を取得する。(楽観的ロック)
      Parameters:
      context - 排他制御コンテキスト
      Returns:
      バージョン番号。バージョン番号が存在しない場合はnull
    • checkVersions

      void checkVersions(List<Version> versions) throws OptimisticLockException
      バージョン番号が更新されていないかチェックする。(楽観的ロック)
      Parameters:
      versions - バージョン番号
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合
    • updateVersionsWithCheck

      void updateVersionsWithCheck(List<Version> versions) throws OptimisticLockException
      バージョン番号の更新チェックとバージョン番号の更新を行う。(楽観的ロック)
      Parameters:
      versions - バージョン番号
      Throws:
      OptimisticLockException - バージョン番号が更新されていた場合
    • updateVersion

      void updateVersion(ExclusiveControlContext context)
      バージョン番号を更新する。(悲観的ロック)
      Parameters:
      context - 排他制御コンテキスト
    • addVersion

      void addVersion(ExclusiveControlContext context)
      バージョン番号を追加する。
      Parameters:
      context - 排他制御コンテキスト
    • removeVersion

      void removeVersion(ExclusiveControlContext context)
      バージョン番号を削除する。
      Parameters:
      context - 排他制御コンテキスト