既存のオブジェクトを操作するためには,まず,そのオブジェクトに接続する必要があります。オブジェクトに接続するメソッドには,次の2種類があります。
これらのメソッドの主な違いは,処理性能です。SetOIIDメソッドを使用すると,接続時にオブジェクトにロックを設定しない(データベースにアクセスしない)ため,ConnectObjectメソッドを使用する場合に比べて高速な処理が実現できます。
ここでは,それぞれのメソッドの特長について説明します。ロックについての詳細は,「3.14 排他制御」を参照してください。
また,既存のオブジェクトに接続する場合,そのオブジェクトのOIIDを指定します。OIIDがわからない場合は,事前に検索等を実行して,OIIDを取得しておく必要があります。
検索については,「4. オブジェクトの検索」を参照してください。
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();
ConnectObjectメソッドは,ロックを設定してオブジェクトに接続するメソッドです。引数に指定した種類のロックがオブジェクトに設定されます。
ConnectObjectメソッドを使用したコールシーケンスの例を次に示します。
CdbrDocument ObjDoc;
pSession->Begin();
//データベースにアクセスして,ObjDocにWRITEロックを設定する
ObjDoc.ConnectObject(pSession,DMA_LOCK_WRITE,pOIID);
//WRITEロックを設定したオブジェクトのプロパティを参照する
ObjDoc.GetPropertyValues(...);
//プロパティを更新する
ObjDoc.PutPropertyValues(...);
ObjDoc.ReleaseObject();
pSession->Commit();