Mapクラスは、SQL構造型のマッピングをC++クラスに格納するために使用します。
オブジェクト型トランスレータ(OTT)は、各ユーザー定義型ごとに、C++クラス宣言を生成し、静的なreadSQL()メソッドとwriteSQL()メソッドを実装します。readSQL()メソッドは、サーバーからのオブジェクトがC++クラス・インスタンスとしてアプリケーション内に構築されるとコールされます。writeSQL()メソッドは、アプリケーション・キャッシュ内のオブジェクトがサーバーに書き込まれるか、フラッシュされると、そのオブジェクトをサーバーのデータにマーシャリングするためにコールされます。OTTによって生成されたreadSQL()メソッドとwriteSQL()メソッドは、OCCI標準C++マッピングに基づいています。
OTTで生成された標準マッピングをカスタマイズしたマッピングでオーバーライドする場合、カスタマイズが必要な各SQL構造型ごとに、readSQL()メソッドとwriteSQL()メソッドに加えて、カスタムC++クラスを実装する必要があります。また、そのような各クラスのエントリをEnvironmentのMapメンバーに追加する必要があります。
カスタマイズする型のマップ・エントリであるtype_nameを追加します。type_nameのC++クラスを実装する必要があります。
次に、この情報をマップ・オブジェクトに追加する必要があります。ユーザーが標準マッピングをオーバーライドする場合は、このオブジェクトを接続に登録する必要があります。この登録は、環境が作成された後に、このメソッドをコールすることで実行できます。
| 構文 | 説明 |
|---|---|
void put( const string &schemaType, void *(*rSQL)(void *), void (*wSQL) (void *, void *)); |
型および対応するC++ readSQL関数とwriteSQL関数を登録します。 |
void put( const string& schName, const string& typName, void *(*rSQL)(void *), void (*wSQL)(void *, void *)); |
型および対応するC++ readSQL関数とwriteSQL関数を登録します。これはマルチバイト・サポートの場合です。 |
void put( const UString& schName, const UString& typName, void *(*rSQL)(void *), void (*wSQL)(void *, void *)); |
型および対応するC++ readSQL関数とwriteSQL関数を登録します。これはUnicodeサポートの場合です。 |
| パラメータ | 説明 |
|---|---|
schemaType |
スキーマと型名をピリオド(.)で区切って指定します(HR.TYPE1など)。 |
schName |
スキーマの名前を指定します。 |
typName |
型の名前を指定します。 |
rDQL |
型に対応するC++クラスのreadSQL関数のポインタを指定します。 |
wSQL |
型に対応するC++クラスのwriteSQL関数のポインタを指定します。 |