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

戻る
戻る
 
次へ
次へ
 

36 リレーショナル・ダイレクト・コレクション・マッピングの構成

この章では、リレーショナル・ダイレクト・コレクション・マッピングを使用するために構成する必要がある様々なコンポーネントについて説明します。

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

複数のマッピング・タイプに共通のTopLinkマッピング・オプションを構成する方法の詳細は、第121章「マッピングの構成」を参照してください。

TopLinkマッピングの作成方法の詳細は、第120章「マッピングの作成」を参照してください。

表36-1は、リレーショナル・ダイレクト・コレクション・マッピングの構成可能オプションを示します。

36.1 リレーショナル・ダイレクト・コレクション・マッピングの構成の概要

表36-1は、リレーショナル・ダイレクト・コレクション・マッピングの構成可能オプションを示します。

表36-1 リレーショナル・ダイレクト・コレクション・マッピングの構成可能オプション

オプション Oracle JDeveloper
TopLink Workbench
Java

ターゲット表(36.2項「ターゲット表の構成」を参照)

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

ダイレクト値フィールド(36.3項「ダイレクト値フィールドの構成」を参照)

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

メソッドまたは直接フィールド・アクセス(121.6項「マッピング・レベルでのメソッドまたは直接フィールド・アクセスの構成」を参照)

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

読取り専用マッピング(121.2項「読取り専用マッピングの構成」を参照)

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

バッチ読取り(28.5項「バッチ読取りの構成」を参照)

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

インダイレクション(遅延ロード)(121.3項「インダイレクション(遅延ロード)の構成」を参照)

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

コンテナ・ポリシー(121.14項「コンテナ・ポリシーの構成」を参照)

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

マッピング・コメント(121.8項「マッピング・コメントの構成」を参照)

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

シリアライズ・オブジェクト・コンバータ(121.9項「シリアライズ・オブジェクト・コンバータの構成」を参照)

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

タイプ変換コンバータ(121.10項「タイプ変換コンバータの構成」を参照)

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

オブジェクト・タイプ・コンバータ(121.11項「オブジェクト・タイプ・コンバータの構成」を参照)

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

表およびフィールド参照(28.7項「表およびフィールド参照の構成(外部キーおよびターゲット外部キー)」を参照)

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

例36-1は、Javaコードによるダイレクト・コレクション・マッピングの作成方法とディスクリプタへの追加方法を示します。

例36-1 ダイレクト・コレクション・マッピング

public void customize(ClassDescriptor descriptor) {
    DirectCollectionMapping mapping = new DirectCollectionMapping();

    // configure mapping
    ...

    // add mapping to descriptor
    descriptor.addMapping(mapping);
}

詳細は、次を参照してください。

JPAを使用したダイレクト・コレクション・マッピングの構成の詳細は、『EclipseLink Developer's Guide』の「How to Use the @BasicCollection Annotation」(http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#How_to_Use_the_.40BasicCollection_Annotation)を参照してください。

36.2 ターゲット表の構成

それぞれのダイレクト・コレクションはターゲット表に参照情報を格納します。図27-6では、RESPONS表にコレクションを所有するインスタンスの主キーおよびオブジェクトが含まれます。この表をデータベース内に作成する必要があります。

36.2.1 TopLink Workbenchを使用したターゲット表の構成方法

ダイレクト・コレクションの仕様を指定するには、次の手順を実行します。

  1. ナビゲータでマップされた属性を選択します。そのプロパティがエディタに表示されます。

  2. 「一般」タブをクリックします。「一般」タブが表示されます。

    図36-1 「一般」タブ、「ターゲット表」のオプション

    図36-1の説明が続きます
    「図36-1 「一般」タブ、「ターゲット表」のオプション」の説明

「ターゲット表」のリストを使用して、ダイレクト・コレクション・マッピングの参照フィールドを含む表を選択します。

36.2.2 Javaを使用したターゲット表の構成方法

ダイレクト・コレクション・マッピングでは、TopLink対応ではないJavaオブジェクトのコレクションを格納します。ダイレクト・コレクションでは通常、StringなどのJavaタイプを格納します。

ダイレクト・コレクション・マッピングは、DirectCollectionMappingクラスのインスタンスであり、次の要素を必要とします。

  • setAttributeNameメソッドを使用して設定されたマップ済の属性。

  • setReferenceTableNameメソッドを使用して設定され、コレクションに格納する値があるデータベース表。

  • 値を読み取り、コレクション内に置くための参照表内のダイレクト・フィールドと呼ばれるフィールド。これは、setDirectFieldNameメソッドを使用して設定します。

  • setReferenceKeyFieldNameメソッドを使用し、ソース・オブジェクトの主キーへの外部参照となるフィールドの名前を渡して指定した外部キー情報。


    注意:

    ターゲットの主キーがコンポジット・キーの場合は、キーを構成する各フィールドについて、addReferenceKeyFieldNameメソッドを呼び出します。

例36-2 シンプル・ダイレクト・コレクション・マッピングの構成

public void customize(ClassDescriptor descriptor) {
    DirectCollectionMapping directCollectionMapping =
                                    new DirectCollectionMapping();
    directCollectionMapping.setAttributeName ("responsibilitiesList");
    directCollectionMapping.setReferenceTableName ("RESPONS"); // target table
    directCollectionMapping.setDirectFieldName ("DESCRIP");
    directCollectionMapping.setReferenceKeyFieldName ("EMP_ID");
    directCollectionMapping.useCollectionClass (Collection.class); // default

    // add this mapping to descriptor
    descriptor.addMapping (directCollectionMapping);
}

例36-2に示したAPI以外にも、次の共通APIをダイレクト・コレクション・マッピングに使用できます。

  • useBasicIndirection: TopLink ValueHolderインダイレクションを実装します。

  • useTransparentCollection: 透過インダイレクションを使用すると、この要素によって特殊コレクションがソース・オブジェクトの属性内に配置されます。

  • dontUseIndirection: インダイレクションは実装されません。

DirectCollectionMappingで使用可能なメソッドの詳細は、『Oracle Fusion Middleware Java API Reference for Oracle TopLink』を参照してください。

36.3 ダイレクト値フィールドの構成

参照表内にあるダイレクト値フィールドには、プリミティブ・データの値が格納されます。図27-6では、DESCRIPフィールドにコレクションが格納されます。

36.3.1 TopLink Workbenchを使用したダイレクト値フィールドの構成方法

ダイレクト・コレクションの仕様を指定するには、次の手順を実行します。

  1. ナビゲータでマップされた属性を選択します。そのプロパティがエディタに表示されます。

  2. 「一般」タブをクリックします。「一般」タブが表示されます。

    図36-2 「一般」タブ、「ダイレクト値フィールド」

    図36-2の説明が続きます
    「図36-2 「一般」タブ、「ダイレクト値フィールド」」の説明

「ダイレクト値フィールド」のリストを使用して、コレクションのオブジェクトを含む「ターゲット表」からフィールドを選択します。

36.3.2 Javaを使用したダイレクト値フィールドの構成方法

例36-2「シンプル・ダイレクト・コレクション・マッピングの構成」は、ダイレクト・フィールドの設定方法を含めた、ダイレクト・コレクション・マッピングの作成方法と構成方法を示します。この例では、このマッピングをディスクリプタに追加する方法も示しています。