2.4.2 既存のオブジェクトとの接続

既存のオブジェクトを操作するためには,まず,そのオブジェクトに接続する必要があります。オブジェクトに接続するメソッドには,次の2種類があります。

これらのメソッドの主な違いは,処理性能です。SetOIIDメソッドを使用すると,接続時にオブジェクトにロックを設定しない(データベースにアクセスしない)ため,ConnectObjectメソッドを使用する場合に比べて高速な処理が実現できます。

ここでは,それぞれのメソッドの特長について説明します。ロックについての詳細は,「3.14 排他制御」を参照してください。

また,既存のオブジェクトに接続する場合,そのオブジェクトのOIIDを指定します。OIIDがわからない場合は,事前に検索等を実行して,OIIDを取得しておく必要があります。

検索については,「4. オブジェクトの検索」を参照してください。

<この項の構成>
(1) SetOIIDメソッドを使用したオブジェクトへの接続
(2) ConnectObjectメソッドを使用したオブジェクトへの接続

(1) SetOIIDメソッドを使用したオブジェクトへの接続

SetOIIDメソッドは,ロックを設定しないでオブジェクトに接続するメソッドです。ロックを設定する場合に比べて,高速に処理できます。

SetOIIDメソッドをコールしてオブジェクトに接続した場合,それ以降の操作で,必要に応じてロックを設定します。

SetOIIDメソッドを使用したコールシーケンスの例を次に示します。

SetOIIDメソッドを使用してプロパティの値を参照,設定するコールシーケンス

CdbrDocument ObjDoc;
pSession->Begin();
//ObjDocにOIIDを設定する
ObjDoc.SetOIID(pSession,pOIID);
//プロパティを参照すると同時に,WRITEロックを設定する
ObjDoc.GetPropertyValuesAndLock(...,DMA_LOCK_WRITE);
//プロパティを更新する
ObjDoc.PutPropertyValues(...);
ObjDoc.ReleaseObject();
pSession->Commit();

(2) ConnectObjectメソッドを使用したオブジェクトへの接続

ConnectObjectメソッドは,ロックを設定してオブジェクトに接続するメソッドです。引数に指定した種類のロックがオブジェクトに設定されます。

ConnectObjectメソッドを使用したコールシーケンスの例を次に示します。

ConnectObjectメソッドを使用してプロパティの値を参照,設定するコールシーケンス

CdbrDocument ObjDoc;
pSession->Begin();
//データベースにアクセスして,ObjDocにWRITEロックを設定する
ObjDoc.ConnectObject(pSession,DMA_LOCK_WRITE,pOIID);
//WRITEロックを設定したオブジェクトのプロパティを参照する
ObjDoc.GetPropertyValues(...);
//プロパティを更新する
ObjDoc.PutPropertyValues(...);
ObjDoc.ReleaseObject();
pSession->Commit();