オブジェクトを操作する時には,複数のユーザから同時にオブジェクトに対して操作が実行されないように,排他制御をする必要があります。排他制御はオブジェクトに対してロックを設定することで実現できます。
ロックはメソッドで設定します。クラスライブラリのメソッドによるロックの設定方法には,次に示す方法があります。
- 処理と同時にロックを設定するメソッド(~AndLockメソッド)による明示的なロックの設定
- 処理を実行するときに明示的にロックを設定するメソッドを使用する方法です。
- これらのメソッドでは,事前にSetOIIDメソッドによって接続したオブジェクトに対して,処理と同時に指定したロックが設定できます。
- SetOIIDメソッドと~AndLockメソッドを組み合わせた操作を実行することで,ConnectObjectメソッドによってロックを設定して操作するよりも,データベースへのアクセス回数が減り,高速な処理ができます。
- ConnectObjectメソッドによる明示的なロックの設定
- オブジェクトに接続するときに明示的にロックを設定する,ConnectObjectメソッドを使用する方法です。このメソッドでは,クラスライブラリを構成するDMAオブジェクトのうち,トップオブジェクトに当たるオブジェクトにロックを設定します。
- 検索の実行結果に対する明示的なロックの設定
- 検索の実行結果に対して明示的にロックを設定する方法です。
- CdbrEqlStatement::ChangeLockTypeメソッドの引数でロックの種類を明示的に指定します。このメソッドで指定したロックが,そのあとで実行するCdbrEqlStatement::Executeメソッドの実行結果(検索結果集合)に対して設定されます。
- なお,この方法で明示的なロックを設定しない場合は,検索の実行結果に対してロックは設定されません。暗黙に設定されるロックはありません。
- それ以外のメソッドによる暗黙のロックの設定
- ユーザが明示的にロックを設定するメソッドをコールしなかった場合,DocumentBrokerによってデータベースのアクセスに必要なロックを暗黙に設定させる方法です。設定されるロックの種類は,メソッドごとに異なります。