全て クラス 名前空間 関数 変数 型定義 列挙型 列挙値 ページ
公開型 | 公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
activeObject< MAP, T, FDI > クラステンプレート

C++用 O/Rマッパー Template. [詳解]

#include <trdormapi.h>

+ activeObject< MAP, T, FDI > の継承関係図

公開型

typedef std::vector
< boost::shared_ptr< T > > 
collection_vec_type
 

公開メンバ関数

 activeObject (idatabaseManager *mgr)
 
 activeObject (database_ptr &db, short mode=TD_OPEN_NORMAL)
 
 activeObject (idatabaseManager *mgr, const _TCHAR *tableName)
 
 activeObject (database_ptr &db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL)
 
 activeObject (database *db, const _TCHAR *tableName, short mode=TD_OPEN_NORMAL)
 
 activeObject (database_ptr &db, short tableIndex, short mode=TD_OPEN_NORMAL)
 
 activeObject (database *db, short tableIndex, short mode=TD_OPEN_NORMAL)
 
 ~activeObject ()
 
activeObjectalias (const _TCHAR *src, const _TCHAR *dst)
 
void del ()
 
template<class T2 >
void del (T2 &mdl, bool setKeyValueFromObj=true)
 
table::eFindType direction (const pq_handle &q)
 
table::eFindType direction (const queryBase &q)
 
activeObjectindex (int v)
 
template<class T2 >
void insert (T2 &mdl)
 
template<class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 >
activeObjectkeyValue (const T0 kv0, const T1 kv1, const T2 kv2, const T3 kv3, const T4 kv4, const T5 kv5, const T6 kv6, const T7 kv7)
 
activeObjectoption (int v)
 
pq_handle prepare (queryBase &q, bool serverPrepare=false)
 
template<class Query >
activeObjectread (collection_vec_type &mdls, Query &q, validationFunc func)
 
template<class Query >
activeObjectread (collection_vec_type &mdls, Query &q)
 
template<class Container , class Query >
activeObjectread (Container &mdls, Query &q)
 
template<class Container , class Query >
activeObjectread (Container &mdls, Query &q, validationFunc func)
 
template<class T2 >
void read (T2 &mdl, bool setKeyValueFromObj=true)
 
template<class Container >
void readEach (Container &mdls, queryBase &q, bool sorted=false, bzs::rtl::exception *e=NULL)
 
template<class BaseContainer , class T2 >
void readEach (BaseContainer &mdls, T *(T2::*func)() const, queryBase &q)
 
template<class BaseContainer , class T2 >
void readEach (BaseContainer &mdls, T *(T2::*func)() const, queryBase &q, bzs::rtl::exception &e)
 
template<class Container >
void readEach (Container &mdls, bool sorted=false, bzs::rtl::exception *e=NULL)
 
template<class BaseContainer , class T2 >
void readEach (BaseContainer &mdls, T *(T2::*func)() const)
 
template<class BaseContainer , class T2 >
void readEach (BaseContainer &mdls, T *(T2::*func)() const, bzs::rtl::exception &e)
 
template<class Any_Map_type , class Query >
activeObjectreadMap (Any_Map_type &map, Query &q)
 
template<class Any_Map_type , class Query >
activeObjectreadMap (Any_Map_type &map, Query &q, validationFunc func)
 
template<class Any_Map_type >
activeObjectreadMapMore (Any_Map_type &map)
 
activeObjectreadMore (collection_vec_type &mdls)
 
template<class Container >
activeObjectreadMore (Container &mdls)
 
activeObjectresetAlias ()
 
template<class T2 >
void save (T2 &mdl, bool setKeyValueFromObj=true)
 
table_ptr table () const
 
template<class T2 >
void update (T2 &mdl, bool setKeyValueFromObj=true)
 

限定公開変数類

fdNmaeAlias m_alias
 
FDI * m_fdi
 
MAP m_map
 
int m_option
 
table_ptr m_tb
 

詳解

template<class MAP, class T = typename MAP::mdl_typename, class FDI = typename MAP::fdi_typename>
class bzs::db::protocol::tdap::client::activeObject< MAP, T, FDI >

C++用 O/Rマッパー Template.

テーブルの更新や読み取り結果を、ユーザー定義のクラスとそのコレクションを通じて行えるようにします。
このテンプレートを使用するには、ユーザー定義のクラスとそのコレクションに合わせた以下の2つのクラスが必要です。

それぞれのクラスの詳細は ___ を参照してください。

型定義メンバ詳解

std::vector< boost::shared_ptr< T > > collection_vec_type

読み取りオペレーションの結果を返す、汎用コレクション型。
使用できるコレクション型はこの型に限りません。

構築子と解体子

activeObject ( idatabaseManager mgr)
inlineexplicit

コンストラクタ。 idatabaseManager を渡して生成します。内部では idatabaseManager::table() を使用してテーブルを生成します。
テーブル名は MAP::getTableName() 関数で取得されます。

引数
mgridatabaseManager 型のインスタンスで idatabaseManager::table() でテーブルが取得可能な状態で渡します。
activeObject ( database_ptr db,
short  mode = TD_OPEN_NORMAL 
)
inlineexplicit

コンストラクタ。 database_ptr を渡して生成します。
テーブル名は MAP::getTableName() 関数で取得されます。

引数
dbdatabase_ptr 型のインスタンスでデータベースをオープン済みの状態で渡します。
modeテーブルがオープンされる際に使用するモードを指定します。
activeObject ( idatabaseManager mgr,
const _TCHAR *  tableName 
)
inlineexplicit

コンストラクタ。 idatabaseManager を渡して生成します。内部では idatabaseManager::table() を使用してテーブルを生成します。
テーブル名はtableNameで直接指定されたものが使用されます。

引数
mgridatabaseManager 型のインスタンスで idatabaseManager::table() でテーブルが取得可能な状態で渡します。
tableNameこのオブジェクトで使用するテーブル名を指定します。
activeObject ( database_ptr db,
const _TCHAR *  tableName,
short  mode = TD_OPEN_NORMAL 
)
inlineexplicit

コンストラクタ。 database_ptr を渡して生成します。
テーブル名はtableNameで直接指定されたものが使用されます。

引数
dbdatabase_ptr 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableNameこのオブジェクトで使用するテーブル名を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
activeObject ( database db,
const _TCHAR *  tableName,
short  mode = TD_OPEN_NORMAL 
)
inlineexplicit

コンストラクタ。 database* を渡して生成します。
テーブル名はtableNameで直接指定されたものが使用されます。

引数
dbdatabase* 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableNameこのオブジェクトで使用するテーブル名を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
activeObject ( database_ptr db,
short  tableIndex,
short  mode = TD_OPEN_NORMAL 
)
inlineexplicit

コンストラクタ。 database_ptr を渡して生成します。
テーブルはtableIndexで直接指定されたものが使用されます。

引数
dbdatabase_ptr 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableIndexこのオブジェクトで使用するテーブル番号を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
activeObject ( database db,
short  tableIndex,
short  mode = TD_OPEN_NORMAL 
)
inlineexplicit

コンストラクタ。 database* を渡して生成します。
テーブルはtableIndexで直接指定されたものが使用されます。

引数
dbdatabase* 型のインスタンスでデータベースをオープン済みの状態で渡します。
tableIndexこのオブジェクトで使用するテーブル番号を指定します。
modeテーブルがオープンされる際に使用するモードを指定します。
~activeObject ( )
inline

デストラクタ。

関数詳解

activeObject & alias ( const _TCHAR *  src,
const _TCHAR *  dst 
)
inline

フィールド名の別名をセットします。
複数の別名を定義するには、この関数を繰り返し呼び出してください。
O/Rマップの場合MAPクラス内でフィールドとメンバのマップがされるため、aliasは使用されません。ただし、query が渡される場合に、そこで使用されるフィールド名に別名を指定することができるようになります。
また、別名を指定した場合、query で元の名前を使用することはできません。

引数
src既存のフィールド名を指定します。
dst別名を指定します。
戻り値
メソッドチェーンのために *this を返します。
void del ( )
inline

keyValue() でセットされたキー値のレコードを削除します。
エラーが発生すると、bzs::rtl::exception がスローされます。

void del ( T2 &  mdl,
bool  setKeyValueFromObj = true 
)
inline

mdlで指定したオブジェジェクトから読み取ったキー値のレコードを削除します。 setKeyValueFromObjがfalseの場合は、 keyValue() でセットされたキー値のレコードを削除します。
どちらの場合も削除前にmdlにレコードを読み取ります。

引数
mdl削除するキー値の入ったオブジェクトを指定します。
setKeyValueFromObjレコードの検索にに際し、trueの場合はmdlのキー値を使用します。falseの場合は keyValue() でセットされたキー値を使用します。
table::eFindType direction ( const pq_handle &  q)
inline

qで指定されたクエリーの検索方向を返します。

table::eFindType direction ( const queryBase q)
inline

qで指定されたクエリーの検索方向を返します。

activeObject & index ( int  v)
inline

この後のオペレーションで使用される、テーブルのインデックス番号をセットします。

引数
vテーブルのインデックス番号
戻り値
メソッドチェーンのために *this を返します。
void insert ( T2 &  mdl)
inline

mdlで指定したオブジェジェクトの内容をテーブルにインサートします。
エラーが発生すると、bzs::rtl::exception がスローされます。

引数
mdlインサートする内容を持つオブジェクトを指定します。
activeObject & keyValue ( const T0  kv0,
const T1  kv1,
const T2  kv2,
const T3  kv3,
const T4  kv4,
const T5  kv5,
const T6  kv6,
const T7  kv7 
)
inline

index() で指定したキー値をセットします。マルチセグメントキーの場合は、セグメントの順番どおりに左のパラメータから順に、必要な分だけ値をセットします。引数はテンプレートで table::setFV() 関数でオーバーロードされた型を使用できます。
引数はマルチセグメントキーの最大セグメント数である8個まで指定できます。セグメント数以上の必要のない部分は省略可能です。

戻り値
メソッドチェーンのために *this を返します。
activeObject & option ( int  v)
inline

オプションをセットします。このオプションは readMap() の実装からMAP::init() の最初のパラメータとして渡されます。
MAP内でユーザーの指示した異なる振る舞いなどを実装できます。
このクラス内でこの値が使用されることはありません。

引数
vオプションの値
戻り値
メソッドチェーンのために *this を返します。
pq_handle prepare ( queryBase q,
bool  serverPrepare = false 
)
inline

クエリーをキャッシュして、使用時に識別するプリペアードクエリーハンドルを返します。

引数
[in]qあらかじめ、条件を指定したクエリーをセットします。条件の値には後で値をセットするプレースホルダとして"?"を複数使用することができます。
[in]serverPrepareこのクエリーをサーバーにキャッシュするかどうかを指定します。 falseを指定するとクライアント側でのみキャッシュします。
戻り値
プリぺアードクエリー(クライアントキャッシュ済のフィルターまたはクエリ)のハンドルが返ります。セットしたクエリーにプレースホルダーの?が含まれていればこのハンドルを使用して値をセットする必要があります。 無ければ、そのまますぐに read() join() outerJoin() などのオペレーションを実行できます。 プレースホルダーへの値のセットは、 preparedQuery クラスか、supplyValue() supplyValues() 関数を使って行います。 サーバーにキャッシュされたプリぺアードクエリーはこのテーブルをクローズするまで有効です。 サーバーにキャッシュした場合とそうでない場合で、その後の操作に何ら変わりはありません。 サーバーにキャッシュするとこのメソッド実行時に通信が行われます。 そのテーブルをクローズするまでに、一度しか使われないような場合はキャッシュしないほうが効率的になります。
activeObject & read ( collection_vec_type mdls,
Query &  q,
validationFunc  func 
)
inline

read(Container &mdls, Query &q) のオーバーロードです。
activeObject::collection_vec_type 型のコレクションに qで指定された読み取りクエリーまたはプリペアードクエリーの結果を返します。
また、func で指定されたクライアントフィルターでレコードをフィルタリングします。
事前に index() および keyValue() を使ってインデックス番号と読み取り開始位置を示すキー値を設定しておく必要があります。
activeObject::collection_vec_typeはvectorの汎用コレクションです。

引数
mdls結果を受け取るコレクションを指定します。
q読み取りクエリーまたはプリペアードクエリーを指定します。この処理はサーバー側で行われるフィルタリングです。
funcユーザー定義型のクライアントフィルターを指定します。内部では filterdFindIterator クラスが使用されます。フィルター関数の詳細は filterdFindIterator を参照してください。
戻り値
メソッドチェーンのために *this を返します。
activeObject & read ( collection_vec_type mdls,
Query &  q 
)
inline

read(Container &mdls, Query &q) のオーバーロードです。
activeObject::collection_vec_type 型のコレクションに qで指定された読み取りクエリーまたはプリペアードクエリーの結果を返します。
事前に index() および keyValue() を使ってインデックス番号と読み取り開始位置を示すキー値を設定しておく必要があります。
activeObject::collection_vec_typeはvectorの汎用コレクションです。

引数
mdls結果を受け取るコレクションを指定します。
q読み取りクエリーまたはプリペアードクエリーを指定します。この処理はサーバー側で行われるフィルタリングです。
戻り値
メソッドチェーンのために *this を返します。
activeObject & read ( Container &  mdls,
Query &  q 
)
inline

Container 型のコレクションに qで指定された読み取りクエリーまたはプリペアードクエリーの結果を返します。
事前に index() および keyValue() を使ってインデックス番号と読み取り開始位置を示すキー値を設定しておく必要があります。
Containerは、vectorではないユーザーオリジナルコレクションです。

引数
mdls結果を受け取るコレクションを指定します。
q読み取りクエリーまたはプリペアードクエリーを指定します。この処理はサーバー側で行われるフィルタリングです。
戻り値
メソッドチェーンのために *this を返します。
activeObject & read ( Container &  mdls,
Query &  q,
validationFunc  func 
)
inline

read(Container &mdls, Query &q) のオーバーロードです。
Container 型のコレクションに qで指定された読み取りクエリーまたはプリペアードクエリーの結果を返します。
また、func で指定されたクライアントフィルターでフィルタリングします。
事前に index() および keyValue() を使ってインデックス番号と読み取り開始位置を示すキー値を設定しておく必要があります。
Containerは、vectorではないユーザーオリジナルコレクションです。

引数
mdls結果を受け取るコレクションを指定します。
q読み取りクエリーまたはプリペアードクエリーを指定します。この処理はサーバー側で行われるフィルタリングです。
funcユーザー定義型のクライアントフィルターを指定します。内部では filterdFindIterator クラスが使用されます。フィルター関数の詳細は filterdFindIterator を参照してください。
戻り値
メソッドチェーンのために *this を返します。
void read ( T2 &  mdl,
bool  setKeyValueFromObj = true 
)
inline

mdlで指定したオブジェジェクトから読み取ったキー値でレコードを読み取ります。 setKeyValueFromObjがfalseの場合は、 keyValue() でセットされたキー値のレコードを読み取ります。
レコードが見つからない場合も含め、エラーが発生すると、bzs::rtl::exception がスローされます。

引数
mdl読み取るレコードのキー値の入ったオブジェクトを指定します。
setKeyValueFromObjレコードの検索にに際し、trueの場合はmdlのキー値を使用します。falseの場合は keyValue() でセットされたキー値を使用します。
void readEach ( Container &  mdls,
queryBase q,
bool  sorted = false,
bzs::rtl::exception *  e = NULL 
)
inline

Container 型のコレクションの各オブジェクトで指定されたキー値を使って、各オブジェクトを読み取ります。read(T2 &mdl, bool setKeyValueFromOb) の複数処理版です。 qで指定できるのはフィールドのselectのみです。それ以外のwhere() and_() or_() limit() reject() などで指定された値はすべて無視されます。

引数
mdlsキー値が入ったオブジェクトのコレクションを渡します。また、それぞれの読み取り結果が返されます。
qクエリーを指定します。 select() と optimize() で指定した値のみ有効です。
sortedmdlsが事前に index() で指定されたキー順にソートされている場合は、trueを指定してください。最適化のためのソート処理がバイパスされより高速に処理できます。
e読み取りに失敗した場合、ここで指定したパラメータに例外をセットして返します。このとき処理は中止されず最後まで継続されます。このパラメータNULLの場合は、即時に例外をスローします。
注意
このメソッドは transactdでのみ使用できます。P.SQLでは使用できません。
void readEach ( BaseContainer &  mdls,
T *(T2::*)() const  func,
queryBase q 
)
inline

BaseContainer 型のコレクションの各オブジェクトから、T2::*func() で取得できるこのテーブルに関連するオブジェクト(T 型)に設定されたキー値を使って、各オブジェクトを読み取ります。 たとえば、BaseContainerが usersで user->group() でグループオブジェクトを取得できるとすると、T2::*func()は user::group() です。内部ではusersからすべての、user->group()を呼び出し groupsを作成します。このgroupsを readEach (Container &mdls, ...)関数に渡します。 qで指定できるのはフィールドのselectのみです。それ以外のwhere() and_() or_() limit() reject() などで指定された値はすべて無視されます。

引数
mdlsmdl::func() でこのテーブルに関連するオブジェクトを取り出せるコレクションを指定します。取り出したオブジェクトには、index() で指定したキー値がセットされている必要があります。また、それぞれの読み取り結果が返されます。
funcmdl::func()でこのテーブルに関連するオブジェクトを取り出せる関数を指定します。
qクエリーを指定します。 select() と optimize() で指定した値のみ有効です。
void readEach ( BaseContainer &  mdls,
T *(T2::*)() const  func,
queryBase q,
bzs::rtl::exception &  e 
)
inline

readEach(BaseContainer &mdls, T *(T2::*func)() const, queryBase &q) のオーバーロードです。
追加で例外の受け取りを後で行うことができます。

引数
mdlsmdl::func() でこのテーブルに関連するオブジェクトを取り出せるコレクションを指定します。取り出したオブジェクトには、index() で指定したキー値がセットされている必要があります。また、それぞれの読み取り結果が返されます。
funcmdl::func()でこのテーブルに関連するオブジェクトを取り出せる関数を指定します。
qクエリーを指定します。 select() と optimize() で指定した値のみ有効です。
e読み取りに失敗した場合、ここで指定したパラメータに例外をセットして返します。このとき処理は中止されず最後まで継続されます。このパラメータNULLの場合は、即時に例外をスローします。
void readEach ( Container &  mdls,
bool  sorted = false,
bzs::rtl::exception *  e = NULL 
)
inline

Container 型のコレクションの各オブジェクトで指定されたキー値を使って、各オブジェクトを読み取ります。read(T2 &mdl, bool setKeyValueFromOb) の複数処理版です。 内部では、table::find() オペレーションを使わず、 table::seek() のみを使用して実装されます。P.SQLでの使用のために容易されています。

引数
mdlsキー値が入ったオブジェクトのコレクションを渡します。また、それぞれの読み取り結果が返されます。
sortedmdlsが事前に index() で指定されたキー順にソートされている場合は、trueを指定してください。最適化のためのソート処理がバイパスされより高速に処理できます。
e読み取りに失敗した場合、ここで指定したパラメータに例外をセットして返します。このとき処理は中止されず最後まで継続されます。このパラメータNULLの場合は、即時に例外をスローします。
void readEach ( BaseContainer &  mdls,
T *(T2::*)() const  func 
)
inline

readEach(BaseContainer &mdls, T *(T2::*func)() const, queryBase &q) のオーバーロードです。
P.SQLの場合クエリは指定できません。この関数はP.SQLのために用意されています。

void readEach ( BaseContainer &  mdls,
T *(T2::*)() const  func,
bzs::rtl::exception &  e 
)
inline

readEach(BaseContainer &mdls, T *(T2::*func)() const, queryBase &q) のオーバーロードです。
詳しくはそのほかのオーバーロードを参照してください。

activeObject & readMap ( Any_Map_type &  map,
Query &  q 
)
inline

read(Container &mdls, Query &q) 関数の内部で使用されています。MAPオブジェクトを指定することができます。 そのほかは、 read(Container &mdls, Query &q) 関数と同様です。

activeObject & readMap ( Any_Map_type &  map,
Query &  q,
validationFunc  func 
)
inline

read(Container &mdls, Query &q, validationFunc func) 関数の内部で使用されています。MAPオブジェクトを指定することができます。 そのほかは、 read(Container &mdls, Query &q, validationFunc func) 関数と同様です。

activeObject & readMapMore ( Any_Map_type &  map)
inline

readMore(Container &mdls) 関数の内部で使用されています。MAPオブジェクトを指定することができます。 そのほかは、 readMore(Container &mdls) 関数と同様です。

activeObject & readMore ( collection_vec_type mdls)
inline

直前の read() がクエリの reject() または limit() によって検索が中止されていた場合、 最後に検索したレコードのその続きから前回のクエリーの内容で読み取りを行います。

引数
mdls結果を受け取る mdls collection_vec_typeオブジェクトを指定します。

mdls で指定する mdlsは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。
また、このテーブルに対する直前のオペレーションは activeObject::read() でなければなりません。それ以外のオペレーションの後で、この関数を呼び出した時の動作は不定です。
直前の read() がクエリの reject() または limit()以外の理由で終了していた場合、この関数を呼び出しても何も読み取られません。検索の終了ステータスの詳細は、 table::statReasonOfFind() を参照してください。

activeObject & readMore ( Container &  mdls)
inline

直前の read() がクエリの reject() または limit() によって検索が中止されていた場合、 最後に検索したレコードのその続きから前回のクエリーの内容で読み取りを行います。

引数
mdls結果を受け取る mdls Containerオブジェクトを指定します。

mdls で指定する mdlsは空でなければなりません。空でない場合は clear() が呼び出され初期化されます。
また、このテーブルに対する直前のオペレーションは activeObject::read() でなければなりません。それ以外のオペレーションの後で、この関数を呼び出した時の動作は不定です。
直前の read() がクエリの reject() または limit()以外の理由で終了していた場合、この関数を呼び出しても何も読み取られません。検索の終了ステータスの詳細は、 table::statReasonOfFind() を参照してください。

activeObject & resetAlias ( )
inline

alias() で指定した別名をすべてクリアし無効にします。

void save ( T2 &  mdl,
bool  setKeyValueFromObj = true 
)
inline

mdlで指定したオブジェジェクトから読み取ったキー値のレコードがあれば変更し、無ければ追加します。 setKeyValueFromObjがfalseの場合は、 keyValue() でセットされたキー値のレコードを検索します。
エラーが発生すると、bzs::rtl::exception がスローされます。

引数
mdl更新または追加する値の入ったオブジェクトを指定します。
setKeyValueFromObjレコードの検索にに際し、trueの場合はmdlのキー値を使用します。falseの場合は keyValue() でセットされたキー値を使用します。
table_ptr table ( ) const
inline

内部で使用される table_ptr を返します。

void update ( T2 &  mdl,
bool  setKeyValueFromObj = true 
)
inline

mdlで指定したオブジェジェクトから読み取ったキー値のレコードがあれば変更します。 setKeyValueFromObj がfalseの場合は、keyValue() でセットされたキー値のレコードを検索します。
レコードが見つからない場合も含めエラーが発生すると、bzs::rtl::exception がスローされます。

引数
mdl更新する値の入ったオブジェクトを指定します。
setKeyValueFromObjレコードの検索にに際し、trueの場合はmdlのキー値を使用します。falseの場合は keyValue() でセットされたキー値を使用します。

メンバ詳解

fdNmaeAlias m_alias
protected

別名を保持する fdNmaeAlias 型のコレクション。

FDI * m_fdi
protected

FDI*型のインスタンス。

MAP m_map
protected

MAP型のインスタンス。

int m_option
protected

option() で設定された オプションを保持します。

table_ptr m_tb
protected

内部でテーブルアクセスで使用されるtable_ptr。

Transactd SDK 2018年07月31日(火) 19時40分30秒 doxygen