ヘッダーをスキップ
Oracle TopLink開発者ガイド
10g(10.1.3.1.0)
B31861-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

46 オブジェクト・リレーショナル・マッピングの概要

オブジェクト・リレーショナル・マッピングは、特定オブジェクトのデータ・メンバー・タイプを、Oracle Databaseのような特別なオブジェクト・リレーショナル・データベースでの格納に最適化された構造化データ・ソース表現に変換します。オブジェクト・リレーショナル・マッピングを使用すると、オブジェクト・モデルをオブジェクト・リレーショナル・データ・モデルにマップできます。

オブジェクト・リレーショナル・マッピングとリレーショナル・マッピングは混同しないでください(「リレーショナル・マッピングの概要」を参照)。リレーショナル・マッピングは、オブジェクトのデータ・メンバー・タイプを、サポートされているリレーショナル・データベースの対応するリレーショナル・データベース(SQL)のデータ・ソース表現に変換します。リレーショナル・マッピングを使用すると、オブジェクト・モデルをリレーショナル・データ・モデルにマップすることができます。通常、リレーショナル・マッピングは、サポートされているすべてのリレーショナル・データベースで使用できます。オブジェクト・リレーショナル・マッピングは、オブジェクト・データ・ソース表現をサポートするために最適化された特別のオブジェクト・リレーショナル・データベースにのみ使用できます。

この章の内容は次のとおりです。

オブジェクト・リレーショナル・マッピング・タイプ

TopLinkでは、表46-1に示すオブジェクト・リレーショナル・マッピングをサポートしています。

これらのマッピングを使用すると、オブジェクト・モデルをオブジェクト・リレーショナル・データ・モデルに永続化させることができます。現在、TopLink Workbenchでは、オブジェクト・リレーショナル・マッピングをサポートしていないため、コードで定義するか、修正メソッドを使用して定義する必要があります。

表46-1 TopLinkのオブジェクト・リレーションシップ・マッピングのタイプ

タイプ 説明 タイプ TopLink Workbench Java

「オブジェクト・リレーショナルの構造マッピング」


オブジェクト・リレーショナルの集約構造(JDBCのStructタイプおよびOracleデータベースのOBJECTタイプ)にマップします。

詳細

サポートされていない
サポートされている

「オブジェクト・リレーショナルの参照マッピング」


オブジェクト・リレーショナルの参照(JDBCのRefタイプおよびOracleデータベースのREFタイプ)にマップします。

詳細

サポートされていない
サポートされている

「オブジェクト・リレーショナルの配列マッピング」


プリミティブ・データのコレクションをオブジェクト・リレーショナルの配列データ・タイプ(JDBCのArrayタイプおよびOracleデータベースのVARRAYタイプ)にマップします。

詳細

サポートされていない
サポートされている

「オブジェクト・リレーショナルのオブジェクト配列マッピング」


オブジェクト・リレーショナルの配列データ・タイプ(JDBCのArrayタイプおよびOracleデータベースのVARRAYタイプ)にマップします。

詳細

サポートされていない
サポートされている

「オブジェクト・リレーショナルのネストした表マッピング」


オブジェクト・リレーショナルのネストした表(JDBCのArrayタイプおよびOracleデータベースのNESTED TABLEタイプ)にマップします。

詳細

サポートされていない
サポートされている

オブジェクト・リレーショナルの構造マッピング

オブジェクト・リレーショナル・データ・モデルでは、構造は、ユーザー定義のデータ・タイプまたはオブジェクト・タイプです。これは、Javaクラスと同様で、各属性が次のいずれかである属性またはフィールドを定義します。

TopLinkでは、ネストした構造を、StructureMappingクラスを使用してマップします。構造マッピングでは、追加設定を行わなくても、null値および共有集約がサポートされます(データベースのオブジェクト・リレーショナル・サポートのため)。

詳細は、「オブジェクト・リレーショナルの構造マッピングの構成」を参照してください。

オブジェクト・リレーショナルの参照マッピング

オブジェクト・リレーショナル・データ・モデルでは、構造は、従来のデータ・モデルにおける外部キーではなく、参照を介して相互に参照します。参照は、ターゲット構造のObjectIDに基づいています。これらは、Javaのオブジェクト参照を表します。

TopLinkでは、ReferenceMappingクラスを使用して参照をマップします。参照マッピングは、外部キー情報を必要としません(データベースのオブジェクト・リレーショナル・サポートのため)。

詳細は、「オブジェクト・リレーショナルの参照マッピングの構成」を参照してください。

オブジェクト・リレーショナルの配列マッピング

オブジェクト・リレーショナル・データ・モデルでは、構造に配列(他のデータ・タイプのコレクション)を含めることができます。これらの配列には、プリミティブ・データ・タイプまたは他の構造のコレクションを含めることができます。

TopLinkでは、プリミティブ・データ・タイプの配列を、ArrayMappingクラスを使用してマップします。配列マッピングでは、オブジェクト・リレーショナルの配列データ・タイプ(JDBCのArrayタイプおよびOracleデータベースのVARRAYタイプ)にマップします。集約構造のコレクションをマップするには、オブジェクト配列マッピングを使用します(「オブジェクト・リレーショナルのオブジェクト配列マッピング」を参照)。

オブジェクト・リレーショナル・データベースでは、配列とその親構造を同じ表に格納します。親構造の表とは異なる表に情報を格納するには、ネストした表マッピングを使用します(「オブジェクト・リレーショナルのネストした表マッピング」を参照)。

配列内のすべての要素を同じデータ・タイプにする必要があります。配列内の要素数により、配列のサイズが制御されます。Oracleデータベースでは、可変サイズの配列(VARRAYタイプ)を使用できます。

詳細は、「オブジェクト・リレーショナルの配列マッピングの構成」を参照してください。

オブジェクト・リレーショナルのオブジェクト配列マッピング

オブジェクト・リレーショナル・データ・モデルでは、構造に配列(他のデータ・タイプのコレクション)を含めることができます。これらの配列には、プリミティブ・データ・タイプまたは他の構造のコレクションを含めることができます。

TopLinkでは、構造の配列をObjectArrayMappingクラスを使用してマップします。オブジェクト配列マッピングでは、ターゲット・オブジェクトがソース・オブジェクトと同じ行を共有するコレクション集約リレーションシップを定義します。

このマッピングを、親クラス内の属性に関連付ける必要があります。

詳細は、「オブジェクト・リレーショナルのオブジェクト配列マッピングの構成」を参照してください。

オブジェクト・リレーショナルのネストした表マッピング

ネストした表タイプは、順序付けられていない要素群をモデル化します。これらの要素は、組込みタイプまたはユーザー定義タイプのいずれかです。ネストした表は、単一列の表として表示したり、ネストした表がオブジェクト・タイプの場合は、複数列の表(オブジェクト・タイプの各属性に対して列が存在する)として表示できます。

TopLinkでは、ネストした表を、NestedTableMappingクラスを使用してマップします。これは、Javaのオブジェクト参照のコレクションを表します。データベースのオブジェクト・リレーショナル・サポートがあるため、ネストした表マッピングは、外部キー情報(1対多マッピングのように)またはリレーショナル表(多対多マッピングのように)を必要としません。

通常、ネストした表は、他の独立構造への参照の1対多または多対多リレーションシップを表します。ネストした表は、親表に格納されているVARRAYタイプよりも、問合せおよび結合のサポートに優れています。TopLinkでは、REFタイプのみのネストした表のマッピングをサポートします。TopLinkでは、構造化データ・タイプは基本的なものを初めとしていっさいサポートされません。このため、かわりに、配列マッピング(「オブジェクト・リレーショナルの配列マッピング」を参照)またはオブジェクト配列マッピング(「オブジェクト・リレーショナルのオブジェクト配列マッピング」を参照)を使用してください。

詳細は、「オブジェクト・リレーショナルのネストした表マッピング」を参照してください。