ヘッダーをスキップ
Oracle Fusion Middleware Oracle TopLink開発者ガイド
11gリリース1(11.1.1)
B56246-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

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

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

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

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

複数のタイプのTopLinkマッピングに共通のマッピングの概念と機能の詳細は、第17章「マッピングの概要」を参照してください。

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

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

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

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

マッピングのタイプ 説明 Oracle JDeveloper
TopLink Workbench Java

オブジェクト・リレーショナル・データ・タイプの構造マッピング(40.1.1項「オブジェクト・リレーショナル・データ・タイプの構造マッピング」を参照)

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

サポートされていない


サポートされていない


サポートされている

オブジェクト・リレーショナル・データ・タイプの参照マッピング(40.1.2項「オブジェクト・リレーショナル・データ・タイプの参照マッピング」を参照)

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

サポートされていない


サポートされていない


サポートされている

オブジェクト・リレーショナル・データ・タイプの配列マッピング(40.1.3項「オブジェクト・リレーショナル・データ・タイプの配列マッピング」を参照)

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

サポートされていない


サポートされていない


サポートされている

オブジェクト・リレーショナル・データ・タイプのオブジェクト配列マッピング(40.1.4項「オブジェクト・リレーショナル・データ・タイプのオブジェクト配列マッピング」を参照)

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

サポートされていない


サポートされていない


サポートされている

オブジェクト・リレーショナル・データ・タイプのネストした表マッピング(40.1.5項「オブジェクト・リレーショナル・データ・タイプのネストした表マッピング」を参照)

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

サポートされていない


サポートされていない


サポートされている

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

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

  • プリミティブ・データ・タイプ

  • 別の構造

  • 別の構造への参照

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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