13.23 PObjectクラス

OCCIには、アプリケーションが次の操作をオブジェクトに対して実行できるように、オブジェクト・ナビゲーショナル・コールが用意されています。

  • オブジェクトの作成、アクセス、ロック、削除、コピーおよびフラッシュ

  • オブジェクトへの参照の取得

このクラスによって、型の定義に携わる担当者は、クラスが永続または一時インスタンスを保持できる時点を指定できます。PObjectから導出されたクラスのインスタンスは、永続または一時のいずれかです。たとえば、永続性可能なクラスAは、PObjectクラスを継承します。

class A : PObject { ... } 

NULLPObjectに対する有効なメソッドは、setName()isNull()およびoperator=()のみです。

lock()などの一部のメソッドは、永続インスタンスのみに適用され、一時インスタンスには適用されません。

表13-31 PObjectクラスで使用される列挙値

属性 オプション
LockOption
  • OCCI_LOCK_WAITは、キャッシュに対してロックの取得後にのみオブジェクトを確保するように指示します。オブジェクトが別のユーザーによりロックされている場合、このオプションを指定した確保コールはロックを取得できるまで待機してからコール元に戻ります。これはSELECT FOR UPDATEと等価です。

  • OCCI_LOCK_NOWAITは、キャッシュに対してロックの取得後にのみオブジェクトを確保するように指示します。オブジェクトが別のユーザーによりロックされている場合は待機しません。これはSELECT FOR UPDATE WITH NOWAITと等価です。

UnpinOption
  • OCCI_PINCOUNT_RESETは、オブジェクトの確保カウントを0にリセットします。

  • OCCI_PINCOUNT_DECRは、オブジェクトの確保カウントを1のみ減らします。

表13-32 PObjectメソッドの概要

メソッド 概要

PObject()

PObjectクラスのコンストラクタです。

flush()

修正した永続オブジェクトをデータベース・サーバーにフラッシュします。

getConnection()

PObjectオブジェクトのインスタンス化元の接続を戻します。

getRef()

指定された永続オブジェクトへの参照を戻します。

getSQLTypeName()

このクラスのOracleデータベース型名を戻します。

isLocked()

永続オブジェクトがロックされているかどうかを確認します。

isNull()

オブジェクトがNULLかどうかをテストします。

lock()

データベース・サーバーの永続オブジェクトをロックします。ロックがない場合、デフォルトのモードはロックの待機です。

markDelete()

永続オブジェクトに削除済マークを設定します。

markModified()

永続オブジェクトに修正済または使用済マークを設定します。

operator=()

1つのPObjectを別のPObjectに代入します。

operator delete()

永続オブジェクトをアプリケーション・キャッシュのみから削除します。

operator new()

永続/一時インスタンスを新規作成します。

pin()

オブジェクトを確保します。

setNull()

オブジェクトの値をNULLに設定します。

unmark()

オブジェクトの使用済マークを解除します。

unpin()

オブジェクトの確保を解除します。デフォルトのモードでは、オブジェクトの確保カウントは1つ分減少します。

13.23.1 PObject()

PObjectクラスのコンストラクタです。

構文 説明
PObject();

NULLのPObjectを作成します。

PObject(
   const PObject &obj);

PObjectのコピーを作成します。

パラメータ 説明
obj

コピー元のオブジェクトを指定します。

13.23.2 flush()

このメソッドは、修正した永続オブジェクトをデータベース・サーバーにフラッシュします。

構文

void flush();

13.23.3 getConnection()

永続オブジェクトがインスタンス化された元の接続を戻します。

構文

const Connection *getConnection() const;

13.23.4 getRef()

このメソッドは、永続オブジェクトへの参照を戻します。

構文

RefAny getRef() const;

13.23.5 getSQLTypeName()

このクラスのOracleデータベース型名を戻します。

構文

string getSQLTypeName() const;

13.23.6 isLocked()

このメソッドは、永続オブジェクトがロックされているかどうかを確認します。永続オブジェクトがロックされている場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool isLocked() const;

13.23.7 isNull()

このメソッドは、永続オブジェクトがNULLかどうかをテストします。永続オブジェクトがNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。

構文

bool isNull() const;

13.23.8 lock()

データベース・サーバーの永続オブジェクトをロックします。

構文

void lock(
   PObject::LockOption lock_option);
パラメータ 説明
lock_option

ロック・オプションです。表13-31を参照してください。

13.23.9 markDelete()

このメソッドは、永続オブジェクトに削除済マークを設定します。

構文

void markDelete();

13.23.10 markModified()

このメソッドは、永続オブジェクトに修正済または使用済マークを設定します。

構文

void mark_Modified();

13.23.11 operator=()

このメソッドは、永続オブジェクトの値をこのPObjectオブジェクトに割り当てます。オブジェクトの性質(一時または永続)は保持されます。NULL情報がソース・インスタンスからコピーされます。

構文

PObject& operator=(
   const PObject& obj);
パラメータ 説明
obj

割り当てられる値の取得元のオブジェクトを指定します。

13.23.12 operator delete()

永続オブジェクトまたは一時オブジェクトを削除します。永続オブジェクトの場合、この削除演算子は、オブジェクトをアプリケーション・キャッシュのみから削除します。データベース・サーバーからオブジェクトを削除するには、markDelete()メソッドをコールします。

構文

void operator delete(
   void *obj,
   size_t size);
パラメータ 説明
obj

削除するオブジェクトへのポインタを指定します。

size

(オプション)サイズはオブジェクトから暗黙的に取得されます。

13.23.13 operator new()

このメソッドは、新規オブジェクトを作成します。接続および表名が指定されている場合は、永続オブジェクトが作成されます。それ以外の場合は、一時オブジェクトが作成されます。

構文 説明
void *operator new(
   size_t size);

サイズのみを指定してデフォルトの新規オブジェクトを作成します。

void *operator new(
   size_t size,
   const Connection *conn,
   const string& tableName,
   const char *typeName);

クライアント側のキャラクタ・セットがマルチバイトの場合の、一時オブジェクトの作成に使用します。

void *operator new(
   size_t size,
   const Connection *conn,
   const string& tableName,
   const string& typeName,
   const string& schTableName="",
   const string& schTypeName="");

クライアント側のキャラクタ・セットがマルチバイトの場合の、永続オブジェクトの作成に使用します。

void *operator new(
   size_t size,
   const Connection *conn,
   const UString& tableName,
   const UString& typeName,
   const UString& schTableName="",
   const UString& schTypeName="");

クライアント側のキャラクタ・セットがUnicode (UTF16)の場合の、永続オブジェクトの作成に使用します。

パラメータ 説明
size

オブジェクトのサイズを指定します。

conn

永続オブジェクトが作成されるデータベースへの接続を指定します。

tableName

データベース・サーバーにある表の名前を指定します。

typeName

このC++クラスに対応するSQLの型名を指定します。フォーマットは、<schemaname>.<typename>です。

schTableName

スキーマの表の名前を指定します。

schTypeName

スキーマの型の名前を指定します。

13.23.14 pin()

このメソッドは、オブジェクトを確保し、確保カウントを1つ増やします。オブジェクトが確保されている場合は、このオブジェクト・インスタンスへの参照がない場合でもキャッシュによって解放されることはありません。

構文

void pin();

13.23.15 setNull()

このメソッドは、オブジェクトの値をNULLに設定します。

構文

void setNull();

13.23.16 unmark()

このメソッドは、永続オブジェクトの修正済または削除済マークを解除します。

構文

void unmark();

13.23.17 unpin()

このメソッドは、永続オブジェクトの確保を解除します。デフォルトのモードでは、オブジェクトの確保カウントは1つ分減少します。このメソッドがOCCI_PINCOUNT_RESETでコールされると、オブジェクトの確保カウントがリセットされます。確保カウントがリセットされると、このオブジェクトを指し示している参照(Ref)はすべて無効になります。キャッシュは、解放の対象となるオブジェクトを設定し、必要に応じてメモリーを再生します。

構文

void unpin(
   UnpinOption mode=OCCI_PINCOUNT_DECR);
パラメータ 説明
mode

UnpinOptionモード、つまり確保カウントを減らすか、0 (ゼロ)にリセットするかを指定します。表13-31を参照してください。有効な値は、OCCI_PINCOUNT_RESETおよびOCCI_PINCOUNT_DECRです。