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-34 Refクラスで使用される列挙値
| 属性 | オプション |
|---|---|
LockOptions |
|
PrefetchOption |
|
| メソッド | 概要 |
|---|---|
|
|
|
|
|
参照を消去します。 |
|
|
このRefが作成された元の接続を戻します。 |
|
|
Refが消去されているかどうかをチェックします。 |
|
|
|
|
|
参照オブジェクトに削除済マークを設定します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
代入演算子です。 |
|
|
|
|
|
参照元オブジェクトにロック・オプションを設定します。 |
|
|
Refを |
|
|
複合オブジェクト検索のプリフェッチ・オプションを設定します。 |
|
|
参照先オブジェクトの削除マークを解除します。 |
Refオブジェクトのコンストラクタです。
| 構文 | 説明 |
|---|---|
Ref(); |
NULLのRefを作成します。 |
Ref( const Ref<T> &src); |
Refのコピーを作成します。 |
| パラメータ | 説明 |
|---|---|
src |
コピーするRefを指定します。 |
このメソッドは、Refオブジェクトを消去します。
構文
void clear();
Refオブジェクトがインスタンス化された元の接続を戻します。
構文
const Connection *getConnection() const;
このメソッドは、Refオブジェクトが消去されているかどうかをチェックします。
構文
bool isClear() const;
このメソッドは、RefオブジェクトがNULLかどうかをテストします。RefオブジェクトがNULLの場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool isNull() const;
このメソッドは、参照オブジェクトに削除済マークを設定します。
構文
void markDelete();
このメソッドは、Refオブジェクトを間接参照し、必要に応じて参照オブジェクトを確保またはフェッチします。参照先オブジェクトのプリフェッチ属性が設定されている場合は、結果的にオブジェクトのグラフのプリフェッチとなる場合があります。
| 構文 | 説明 |
|---|---|
T *operator->(); |
constでないRefオブジェクトを間接参照し、確保またはフェッチします。 |
const T *operator->() const; |
constのRefオブジェクトを間接参照し、確保またはフェッチします。 |
このメソッドは、Refオブジェクトを間接参照し、必要に応じて参照オブジェクトを確保またはフェッチします。参照先オブジェクトのプリフェッチ属性が設定されている場合は、結果的にオブジェクトのグラフのプリフェッチとなる場合があります。オブジェクトを削除する必要はありません。有効範囲外になると、デストラクタが自動的にコールされます。
| 構文 | 説明 |
|---|---|
T& operator*(); |
constでないRefオブジェクトを間接参照し、確保またはフェッチします。 |
const T& operator*() const; |
constのRefオブジェクトを間接参照し、確保またはフェッチします。 |
このメソッドは、2つのRefオブジェクトが同じオブジェクトを参照しているかどうかを確認します。2つのRefオブジェクトが同じオブジェクトを参照している場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator == ( const Ref<T> &ref) const;
| パラメータ | 説明 |
|---|---|
ref |
比較するオブジェクトのRefオブジェクトを指定します。 |
このメソッドは、2つのRefオブジェクトが同じオブジェクトを参照しているかどうかを確認します。2つのRefオブジェクトが同じオブジェクトを参照していない場合はTRUEを、それ以外の場合はFALSEを戻します。
構文
bool operator!= ( const Ref<T> &ref) const;
| パラメータ | 説明 |
|---|---|
ref |
比較するオブジェクトのRefオブジェクトを指定します。 |
RefまたはオブジェクトをRefに割り当てます。最初の場合は複数のRefが割り当てられ、2番目の場合はRefがオブジェクトから作成され、その後に割り当てられます。
| 構文 | 説明 |
|---|---|
Ref<T>& operator=( const Ref<T> &src); |
RefをRefに割り当てます。 |
Ref<T>& operator=( const T *)obj; |
Refをオブジェクトに割り当てます。 |
| パラメータ | 説明 |
|---|---|
src |
割り当てられるソースのRefオブジェクトを指定します。 |
obj |
Refオブジェクトが割り当てられるソース・オブジェクトのポインタを指定します。 |
PObjectへのポインタを戻します。この演算子はRefを間接参照し、必要に応じてオブジェクトを確保またはフェッチします。Refのプリフェッチ属性が設定されている場合は、結果的にオブジェクトのグラフのプリフェッチとなる場合があります。
| 構文 | 説明 |
|---|---|
T *ptr(); |
constでないRefオブジェクトのポインタを戻します。 |
const T *ptr() const; |
constのRefオブジェクトのポインタを戻します。 |
このメソッドは、間接参照する場合のオブジェクトのロック方法を指定します。
構文
void setLock(lockOptions);
| 引数 | 説明 |
|---|---|
lockOptions |
ロック・オプションを指定します(表13-34のLockOptionsの定義を参照)。 |
このメソッドは、RefオブジェクトをNULLに設定します。
構文
void setNull();
複合オブジェクト検索のプリフェッチ・オプションを設定します。このメソッドは、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); |
スキーマ、型名およびレベル、さらにUStringのサポートを使用して、複合オブジェクト検索のプリフェッチ・オプションを設定します。 |
| パラメータ | 説明 |
|---|---|
typeName |
プリフェッチするRef属性の型を指定します。 |
schName |
プリフェッチするRef属性のスキーマ名を指定します。 |
depth |
リンクをたどる深さのレベルを指定します。PrefetchOptionを使用できます。表13-34の定義を参照してください。 |
このメソッドは、参照オブジェクトの使用済および削除用マークを解除します。
構文
void unmarkDelete();