Refクラス
SQL REF値のC++プログラミング言語によるマッピングです。このマッピングは、データベースにあるSQL構造型の値への参照です。
各REF値には、参照先オブジェクトの一意の識別子があります。SQL REF値は、参照するSQL構造型のかわりに使用できます。また、表の列値または構造型の属性値として使用できます。
SQL REF値は、SQL構造型への論理ポインタであるため、デフォルトの場合、Refオブジェクトも論理ポインタです。したがって、RefオブジェクトとしてSQL REF値を取得しても、クライアントの構造型の属性をマテリアライズしません。
NULL
のRef
オブジェクトに対する有効なメソッドは、isNull()およびoperator=()のみです。
Refオブジェクトは永続記憶域に保存でき、operator*()、operator->()またはptr()メソッドによって間接参照されます。Tは、PObject
から導出したクラスであることが必要です。次の項では、T*
とPObject
*が同じ意味で使用されています。
表13-35 Refクラスで使用される列挙値
属性 | オプション |
---|---|
LockOptions |
|
PrefetchOption |
|
表13-36 Refメソッドの概要
メソッド | 概要 |
---|---|
|
|
参照を消去します。 |
|
このRefが作成された元の接続を戻します。 |
|
Refが消去されているかどうかをチェックします。 |
|
|
|
参照オブジェクトに削除済マークを設定します。 |
|
|
|
|
|
|
|
|
|
代入演算子です。 |
|
|
|
参照元オブジェクトにロック・オプションを設定します。 |
|
Refを |
|
複合オブジェクト検索のプリフェッチ・オプションを設定します。 |
|
参照先オブジェクトの削除マークを解除します。 |
Ref()
Ref
オブジェクトのコンストラクタです。
構文 | 説明 |
---|---|
Ref(); |
|
Ref( const Ref<T> &src); |
|
パラメータ | 説明 |
---|---|
src |
コピーする |
isNull()
このメソッドは、Ref
オブジェクトがNULL
かどうかをテストします。Ref
オブジェクトがNULL
の場合はTRUE
を、それ以外の場合はFALSE
を戻します。
構文
bool isNull() const;
operator->()
このメソッドは、Ref
オブジェクトを間接参照し、必要に応じて参照オブジェクトを確保またはフェッチします。参照先オブジェクトのプリフェッチ属性が設定されている場合は、結果的にオブジェクトのグラフのプリフェッチとなる場合があります。
構文 | 説明 |
---|---|
T *operator->(); |
|
const T *operator->() const; |
|
operator*()
このメソッドは、Ref
オブジェクトを間接参照し、必要に応じて参照オブジェクトを確保またはフェッチします。参照先オブジェクトのプリフェッチ属性が設定されている場合は、結果的にオブジェクトのグラフのプリフェッチとなる場合があります。オブジェクトを削除する必要はありません。有効範囲外になると、デストラクタが自動的にコールされます。
構文 | 説明 |
---|---|
T& operator*(); |
|
const T& operator*() const; |
|
operator==()
このメソッドは、2つのRef
オブジェクトが同じオブジェクトを参照しているかどうかを確認します。2つのRef
オブジェクトが同じオブジェクトを参照している場合はTRUE
を、それ以外の場合はFALSE
を戻します。
構文
bool operator == ( const Ref<T> &ref) const;
パラメータ | 説明 |
---|---|
ref |
比較するオブジェクトのRefオブジェクトを指定します。 |
operator!=()
このメソッドは、2つのRef
オブジェクトが同じオブジェクトを参照しているかどうかを確認します。2つのRef
オブジェクトが同じオブジェクトを参照していない場合はTRUE
を、それ以外の場合はFALSE
を戻します。
構文
bool operator!= ( const Ref<T> &ref) const;
パラメータ | 説明 |
---|---|
ref |
比較するオブジェクトの |
operator=()
Ref
またはオブジェクトをRef
に割り当てます。最初の場合は複数のRef
が割り当てられ、2番目の場合はRef
がオブジェクトから作成され、その後に割り当てられます。
構文 | 説明 |
---|---|
Ref<T>& operator=( const Ref<T> &src); |
|
Ref<T>& operator=( const T *)obj; |
|
パラメータ | 説明 |
---|---|
src |
割り当てられるソースの |
obj |
|
ptr()
PObject
へのポインタを戻します。この演算子はRef
を間接参照し、必要に応じてオブジェクトを確保またはフェッチします。Ref
のプリフェッチ属性が設定されている場合は、結果的にオブジェクトのグラフのプリフェッチとなる場合があります。
構文 | 説明 |
---|---|
T *ptr(); |
|
const T *ptr() const; |
|
setLock()
このメソッドは、間接参照する場合のオブジェクトのロック方法を指定します。
構文
void setLock(lockOptions);
引数 | 説明 |
---|---|
lockOptions |
ロック・オプションを指定します(表13-35の |
setPrefetch()
複合オブジェクト検索のプリフェッチ・オプションを設定します。このメソッドは、Ref
を介して到達できる(推移閉包)すべてのオブジェクトをプリフェッチする場合のレベルを指定します。選択した属性の型のみをプリフェッチする場合は、このメソッドの最初のバージョンを使用します。このメソッドは、参照先のオブジェクトのどのRef属性をオブジェクトのプリフェッチ用にたどるか(複合オブジェクト検索)、およびどのレベルまでそれらのリンクをたどるかを指定します。
構文 | 説明 |
---|---|
void setPrefetch( const string &typeName, unsigned int depth); |
型名とレベルを使用して、複合オブジェクト検索のプリフェッチ・オプションを設定します。 |
void setPrefetch( unsigned int depth); |
レベルのみを使用して、複合オブジェクト検索のプリフェッチ・オプションを設定します。 |
void setPrefetch( const string &schName, const string &typeName, unsigned int depth); |
スキーマ、型名およびレベルを使用して、複合オブジェクト検索のプリフェッチ・オプションを設定します。 |
void setPrefetch( const UString &schName, const UString &typeName, unsigned int depth); |
スキーマ、型名およびレベル、さらに |
パラメータ | 説明 |
---|---|
typeName |
プリフェッチするRef属性の型を指定します。 |
schName |
プリフェッチするRef属性のスキーマ名を指定します。 |
depth |
リンクをたどる深さのレベルを指定します。 |