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

戻る
戻る
 
次へ
次へ
 

76 EISディスクリプタの構成

この章では、EISディスクリプタを使用するために構成する必要のある様々なコンポーネントについて説明します。

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

複数のディスクリプタ・タイプに共通のディスクリプタのオプションを構成する方法の詳細は、第119章「ディスクリプタの構成」を参照してください。

表76-1は、EISディスクリプタに構成可能なデフォルトのオプションを示します。

76.1 EISディスクリプタ構成の概要

表76-1は、EISディスクリプタに構成可能なデフォルトのオプションを示します。

表76-1 EISディスクリプタの構成可能オプション

構成オプション Oracle JDeveloper
TopLink Workbench Java

XMLスキーマ・ネームスペース(5.6.5項「XMLスキーマ・ネームスペースの構成方法」を参照)

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

XMLスキーマ参照(5.6.4項「XMLスキーマ参照の構成方法」を参照)

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

スキーマ・コンテキスト(76.2項「EISディスクリプタのスキーマ・コンテキストの構成」を参照)

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

デフォルトのルート要素(76.3項「デフォルトのルート要素の構成」を参照)

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

サポートされていない


主キー(119.2項「主キーの構成」を参照)脚注1

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

読取り専用(119.3項「読取り専用ディスクリプタの構成」を参照)脚注1

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

作業ユニット一致(119.4項「ディスクリプタ・レベルでの作業ユニット一致機能の構成」を参照)脚注1

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

エイリアス(119.5項「ディスクリプタ・エイリアスの構成」を参照)

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

コメント(119.6項「ディスクリプタ・コメントの構成」を参照)

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

レコード形式(76.4項「レコード形式の構成」を参照)

サポートされていない


サポートされていない


サポートされている

クラスの作成(5.7.1項「クラスの作成方法」を参照)

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

名前付き問合せ(119.7項「ディスクリプタ・レベルでの名前付き問合せの構成」を参照)脚注1

サポートされている


サポートされている


サポートされている


基本的な永続操作用のカスタムEISインタラクション(76.5「基本的な永続性操作用のカスタムEISインタラクションの構成」を参照)脚注1

サポートされていない

サポートされている


サポートされている


キャッシュ・リフレッシュ(119.9項「キャッシュ・リフレッシュ機能の構成」を参照)脚注1

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

キャッシュ・タイプとサイズ(119.12項「ディスクリプタ・レベルでのキャッシュ・タイプとサイズの構成」を参照)脚注1

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

キャッシュ分離(119.13項「ディスクリプタ・レベルでのキャッシュ分離機能の構成」を参照)

サポートされている

サポートされている


サポートされている


キャッシュ・コーディネーション変更伝播(119.15項「ディスクリプタ・レベルでのキャッシュ・コーディネーション変更伝播の構成」を参照)

サポートされている

サポートされている


サポートされている


キャッシュの有効期限(119.16項「ディスクリプタ・レベルでのキャッシュ有効期限の構成」を参照)

サポートされている

サポートされている


サポートされている


キャッシュ存在チェック(119.17項「ディスクリプタ・レベルでのキャッシュ存在チェックの構成」を参照)

サポートされている

サポートされている


サポートされている


EJB情報(119.18項「EJB CMPおよびBMP情報によるディスクリプタの構成」を参照)

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

ルートまたはコンポジット・タイプとしてのEISディスクリプタ(76.6項「EISディスクリプタのタイプ(ルートまたはコンポジット)の構成」を参照)

サポートされていない

サポートされている


サポートされている


子クラス・ディスクリプタに関する継承(119.20項「子(ブランチまたはリーフ)クラス・ディスクリプタに関する継承の構成」を参照)

サポートされている


サポートされている


サポートされている


親クラス・ディスクリプタに関する継承(119.21項「親(ルート)ディスクリプタに関する継承の構成」を参照)

サポートされている


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

サブクラスでの継承属性マッピング(119.23項「サブクラスでの継承属性マッピングの構成」を参照)

サポートされている


サポートされている


サポートされている


イベント・ハンドラとしてのドメイン・オブジェクト・メソッド(119.24項「イベント・ハンドラとしてのドメイン・オブジェクト・メソッドの構成」を参照)

サポートされている


サポートされている


サポートされている


イベント・ハンドラとしてのディスクリプタ・イベント・リスナー(119.25項「イベント・ハンドラとしてのディスクリプタ・イベント・リスナーの構成」を参照)

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

サポートされている


ロック・ポリシー(119.26項「ロック・ポリシーの構成」を参照)脚注1

サポートされている


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

リターン・ポリシー(119.27項「リターン・ポリシーの構成」を参照)

サポートされている


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

インスタンス化ポリシー(119.28項「インスタンス化ポリシーの構成」を参照)

サポートされている


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

コピー・ポリシー(119.29項「コピー・ポリシーの構成」を参照)

サポートされている


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

変更ポリシー(119.30項「変更ポリシーの構成」を参照)

サポートされていない


サポートされていない


サポートされている


ラッパー・ポリシー(119.32項「ラッパー・ポリシーの構成」を参照)

サポートされていない


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

修正メソッド(119.35項「修正メソッドの構成」を参照)

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

マッピング(第121章「マッピングの構成」を参照)

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

脚注1 EISルート・ディスクリプタのみ(76.6項「EISディスクリプタのタイプ(ルートまたはコンポジット)の構成」を参照)。

詳細は、第74章「EISディスクリプタの概要」を参照してください。

76.2 EISディスクリプタのスキーマ・コンテキストの構成

TopLink Workbenchでは、EISディスクリプタに記述したクラスと、EISプロジェクトに関連付けられているいずれか1つのスキーマに含まれる単純型または複合型とが、スキーマ・コンテキストを使用して関連付けられます(5.6.4項「XMLスキーマ参照の構成方法」を参照)。これにより、そのコンテキストでのマッピングに使用できる適切な属性がTopLink Workbenchに表示されます。

EISルート・ディスクリプタのスキーマ・コンテキストを構成する必要があるのは、TopLink WorkbenchまたはOracle JDeveloper TopLinkエディタを使用する場合にかぎります(76.6項「EISディスクリプタのタイプ(ルートまたはコンポジット)の構成」を参照)。

76.2.1 TopLink Workbenchを使用したEISディスクリプタのスキーマ・コンテキストの構成方法

EISディスクリプタをこのプロジェクトのスキーマに含まれる単純型または複合型に関連付けるには、次の手順を実行します。

  1. ナビゲータでEISディスクリプタを選択します。そのプロパティがエディタに表示されます。

  2. 「ディスクリプタ情報」タブをクリックします。「ディスクリプタ情報」タブが表示されます。

    図76-1 「ディスクリプタ情報」タブ、「スキーマ・コンテキスト」オプション

    図76-1の説明が続きます
    「図76-1 「ディスクリプタ情報」タブ、「スキーマ・コンテキスト」オプション」の説明

「参照」をクリックして、このディスクリプタに関連付けるスキーマ要素を選択します。詳細は、76.2.1.1項「スキーマ・コンテキストの選択」を参照してください。

76.2.1.1 スキーマ・コンテキストの選択

「スキーマ・コンテキストの選択」ダイアログ・ボックスを使用して、特定のスキーマ要素を選択します(要素のマッピング時など)。

図76-2 「スキーマ・コンテキストの選択」ダイアログ・ボックス

図76-2の説明が続きます
「図76-2 「スキーマ・コンテキストの選択」ダイアログ・ボックス」の説明

スキーマ要素を選択し、「OK」をクリックします。

76.2.2 Javaを使用したEISディスクリプタのスキーマ・コンテキストの構成方法

EISディスクリプタの場合、TopLinkランタイムでは、ディスクリプタに構成したマッピングに基づいてスキーマ・コンテキストが判別されるため、スキーマ・コンテキストは不要です。あらためて構成する必要はありません。

76.3 デフォルトのルート要素の構成

EISルート・ディスクリプタ(75.2.1.1項「EISルート・ディスクリプタ」を参照)に記述したクラスに関連付けられているデータ・ソースのデータ・タイプをTopLinkランタイムに認識させるには、ディスクリプタにデフォルトのルート要素を構成する必要があります。コンポジット・リレーションシップ・マッピングにのみ使用されるディスクリプタの場合、デフォルトのルート要素は不要です。


注意:

この属性を構成するためにプロジェクトのスキーマから要素を選択するわけですが、その際、要素のデータ・タイプ(単純型または複合型)を同時に選択していることになります。

詳細は、16.2.12項「デフォルトのルート要素」を参照してください。

76.3.1 TopLink Workbenchを使用したデフォルトのルート要素の構成方法

TopLink Workbenchを使用してEISプロジェクトを作成する場合は、XMLレコードを使用する必要があります。したがって、EISディスクリプタに記述したクラスのインスタンスを永続化する際にどの要素から開始するかをTopLink Workbenchが認識できるように、デフォルトのルート要素を構成しておく必要があります。

ディスクリプタのデフォルトのルート要素としてスキーマ要素を指定するには、次の手順を実行します。

  1. ナビゲータでディスクリプタを選択します。そのプロパティがエディタに表示されます。

  2. 「ディスクリプタ情報」タブをクリックします。「ディスクリプタ情報」タブが表示されます。

    図76-3 「ディスクリプタ情報」タブ、「デフォルトのルート要素」オプション

    図76-3の説明が続きます
    「図76-3 「ディスクリプタ情報」タブ、「デフォルトのルート要素」オプション」の説明

「デフォルトのルート要素」オプションを使用して、このディスクリプタに対してルート要素を選択します。

「参照」をクリックして、ルート要素として指定するスキーマ要素を選択します。詳細は、76.3.1.1項「ルート要素の選択」を参照してください。

76.3.1.1 ルート要素の選択

「ルート要素の選択」ダイアログ・ボックスを使用して、特定のルート要素を選択します。

図76-4 「ルート要素の選択」ダイアログ・ボックス

図76-4の説明が続きます
「図76-4 「ルート要素の選択」ダイアログ・ボックス」の説明

ルート要素を選択し、「OK」をクリックします。

76.3.2 Javaを使用したデフォルトのルート要素の構成方法

Javaコードを使用してEISプロジェクトを作成するには、EISDescriptorメソッドsetDataTypeNameを使用し、EISディスクリプタに記述したクラスに対応する、XMLスキーマの複合型の名前(XMLレコードを使用の場合)またはJCAレコード名(索引付きまたはマップ済レコードを使用の場合)を指定します。詳細は、『Oracle Fusion Middleware Java API Reference for Oracle TopLink』を参照してください。

76.4 レコード形式の構成

EISディスクリプタのレコード形式により、EISディスクリプタのEISマッピングでマップ先とされるEISレコード・タイプが判別されます。

TopLink Workbenchを使用してEISプロジェクトを作成する場合は、TopLinkによってすべてのEISディスクリプタにXMLレコード形式が構成されます。

Javaを使用してEISプロジェクトを作成する場合は、表76-2に示すとおり、サポートされる任意のレコード・タイプをEISディスクリプタに構成できます。

表76-2 EISレコード形式

EISDescriptorメソッド EISレコード・タイプ

useMappedRecordFormat

このディスクリプタが所有するすべてのEISマッピングでは、EISマップ済レコードへのマップが行われます。

useIndexedRecordFormat

このディスクリプタが所有するすべてのEISマッピングでは、EIS索引付きレコードへのマップが行われます。

useXMLRecordFormat

このディスクリプタが所有するすべてのEISマッピングでは、EIS XMLレコードへのマップが行われます。

XMLレコード形式を使用する場合は、EISプロジェクト内の1つ以上のXMLスキーマを指定する必要があります(5.6.3項「XMLスキーマのインポート方法」を参照)。TopLinkランタイムは、1つ以上のXMLスキーマに基づいてXMLデータ変換を行います。EISプロジェクトでは、TopLink WorkbenchはデプロイXMLのスキーマを直接参照しませんが、そのかわりに、特定のスキーマと一致するように構成されたマッピングをエクスポートします。

TopLinkでサポートされるXMLネームスペースの詳細は、15.2.7項「XMLネームスペース」を参照してください。


詳細は、77.2.1項「EISレコード・タイプ」を参照してください。

76.4.1 Javaを使用したレコード形式の構成方法

EISディスクリプタにEISレコード形式を構成するには、表76-2に示したEISDescriptorメソッドのいずれかを例76-1に示すように使用します。

例76-1 EISディスクリプタのレコード形式の構成

EISDescriptor descriptor = new EISDescriptor();
descriptor.useIndexedRecordFormat();

76.5 基本的な永続性操作用のカスタムEISインタラクションの構成

TopLinkを使用して、基本的な永続性操作(挿入更新削除オブジェクトの読取りすべて読取り、または存在チェック)ごとに1つのインタラクションを定義できます。これにより、EISマップ・オブジェクトに問い合せてそれを変更する際に、TopLinkランタイムではデフォルトのEISインタラクションのかわりに適切なEISインタラクションが使用されます。

ルート・ディスクリプタとして定義したEISディスクリプタにのみ、基本的な永続性操作に対するカスタムのEISインタラクションを構成できます(76.6項「EISディスクリプタのタイプ(ルートまたはコンポジット)の構成」を参照)。

CMPプロジェクトの場合は、問合せリストはejb-jar.xmlファイルに格納されます。問合せは、このファイル内で定義してからTopLink Workbenchに読み取ることも、「問合せ」タブで定義してからこのファイルに書き込むこともできます。詳細は、19.7.1項「TopLink Workbenchを使用したejb-jar.xmlファイルへの書込み方法」および19.7.2項「TopLink Workbenchを使用したejb-jar.xmlファイルからの読取り方法」を参照してください。

TopLink Workbenchを使用すると、インタラクションごとに1つの問合せを定義したXMLInteractionオブジェクトを作成できます(76.5.1項「TopLink Workbenchを使用した基本的な永続性操作用のカスタムEISインタラクションの構成方法」を参照)。

Javaを使用する場合は、任意のタイプのEISインタラクションを作成できます。一部のEISプロジェクトでは、1つの問合せで複数のインタラクションを使用する方法が一般的です。たとえば、あるインタラクションでリクエストをエンキューし、別のインタラクションでそのリクエストに対するレスポンスをデキューします。1つの問合せへの複数のインタラクションの設定はTopLink Workbenchではサポートされないため、Javaで修正メソッドを使用してインタラクションを作成し構成する必要があります(76.5.2項「Javaを使用した基本的な永続性操作用のカスタムEISインタラクションの構成方法」を参照)。


注意:

1対1および1対多のEISマッピングでは、ターゲット・オブジェクトの取得に使用される選択インタラクションを指定しておくことも必要です。ターゲット・オブジェクトの読取りインタラクション(デフォルト)を使用することも、または必要に応じて別の選択インタラクションを指定することもできます。詳細は、78.4項「選択インタラクションの構成」を参照してください。

76.5.1 TopLink Workbenchを使用した基本的な永続性操作用のカスタムEISインタラクションの構成方法

基本的な永続性操作用のカスタムEISインタラクションを構成するには、次の手順を実行します。

  1. ナビゲータで、EISプロジェクトのEISルート・ディスクリプタを選択します。

  2. エディタ「問合せ」タブをクリックします。「問合せ」タブが表示されます。

  3. 「カスタム・コール」タブをクリックします。「カスタム・コール」タブが表示されます。

    図76-5 EISコールの「問合せ」 - 「カスタム・コール」タブ

    図76-5の説明が続きます
    「図76-5 EISコールの「問合せ」 - 「カスタム・コール」タブ」の説明

リスト(「挿入」「更新」「削除」「オブジェクトの読取り」「すべて読取り」または「存在」)から適切なインタラクション・タイプをクリックし、次の表を参照して各フィールドにデータを入力します。

フィールド 説明
インタラクションのタイプ TopLink Workbenchを使用する場合は、「XMLインタラクション」のみを使用できます。このフィールドは変更できません。
ファンクション名 このタイプのコール(「オブジェクトの読取り」または「すべて読取り」)がEISに対して起動するEISファンクションの名前。
入力レコード名 入力レコードの作成時に、JCAアダプタに渡される名前。
入力ルート要素名 入力DOMに使用されるルート要素名。
入力引数 引数レコードのインタラクション・フィールドまたはXPathノードにマップされる問合せ引数名。

たとえば、XMLレコードを使用している場合、このオプションを使用して入力引数nameをXPath name/first-nameにマップします。

出力引数 ディスクリプタのマッピングに使用されるレコード内の正しいノードにマップされる、結果のレコード・フィールドまたはXPathノード。

たとえば、XMLレコードを使用している場合、このオプションを使用して出力fnamename/first-nameにマップします。

対話でディスクリプタのマッピングと一致するXML結果が返される場合、出力引数は必要ありません。

入力結果のパス EISインタラクションが、XMLレコードにネストされるインタラクション引数を予期する場合に、このオプションを使用します。

たとえば、引数を最初にルート要素exec-find-orderの下に、次にarguments要素の下にネストする必要がある場合は、argumentsを指定します。

出力結果のパス このオプションは、ネステッド構造内のオブジェクトにマップされたXMLデータがEISインタラクションの結果レコードに含まれる場合に使用します。

たとえば、最初に結果をルート要素resultsの下に返した後、order要素の下にも結果を返す必要がある場合は、orderを指定します。

プロパティ EISプラットフォームが必要とするプロパティ。たとえば、プロパティ名operationAQPlatform.QUEUE_OPERATIONから)およびプロパティ値enqueueAQPlatform.ENQUEUEから)。

76.5.2 Javaを使用した基本的な永続性操作用のカスタムEISインタラクションの構成方法

Javaを使用すると、TopLinkでサポートされる任意のタイプのEISインタラクションを作成できます(109.8項「EISインタラクションの使用」を参照)。

一部のEISプロジェクトでは、1つの問合せで複数のインタラクションを使用する方法が一般的です。たとえば、あるインタラクションでリクエストをエンキューし、別のインタラクションでそのリクエストに対するレスポンスをデキューするなどです。1つの問合せへの複数のインタラクションの設定はTopLink Workbenchではサポートされないため、例76-2のように、Javaで修正メソッドを使用してインタラクションを作成し構成する必要があります。

例76-2 AQプラットフォーム用のXMLインタラクションの作成

public static void addXMLInteractions(ClassDescriptor descriptor) {
    // find order interaction
    XMLInteraction request = new XMLInteraction();
    request.setProperty(AQPlatform.QUEUE_OPERATION, AQPlatform.ENQUEUE);
    request.setProperty(AQPlatform.QUEUE, "ORDER_INBOUND_QUEUE");
    request.setProperty(AQPlatform.SCHEMA, "AQUSER");
    request.setInputRootElementName("READ_ORDER");
    request.addArgument("@id");

    XMLInteraction response = new XMLInteraction();
    response.setProperty(AQPlatform.QUEUE_OPERATION, AQPlatform.DEQUEUE);
    response.setProperty(AQPlatform.QUEUE, "ORDER_OUTBOUND_QUEUE");
    response.setProperty(AQPlatform.SCHEMA, "AQUSER");

    ReadObjectQuery query = new ReadObjectQuery();
    query.addCall(request);
    query.addCall(response);
    descriptor.getQueryManager().setReadObjectQuery(query);

    // place order interaction
    XMLInteraction insert = new XMLInteraction();
    insert.setProperty(AQPlatform.QUEUE_OPERATION, AQPlatform.ENQUEUE);
    insert.setProperty(AQPlatform.QUEUE, "ORDER_INBOUND_QUEUE");
    insert.setProperty(AQPlatform.SCHEMA, "AQUSER");
    insert.setInputRootElementName("INSERT_ORDER");

    descriptor.getQueryManager().setInsertCall(insert);
}

76.6 EISディスクリプタのタイプ(ルートまたはコンポジット)の構成

EISディスクリプタは、ルート(75.2.2.1項「EISルート・ディスクリプタ」を参照)またはコンポジット(75.2.2.2項「EISコンポジット・ディスクリプタ」を参照)として定義できます。

EISディスクリプタをルートとして設定する場合は、EISディスクリプタの参照クラスが親クラスであること、つまり、その参照クラスが他のクラスからコンポジット・オブジェクト・マッピングまたはコンポジット・コレクション・マッピングを使用して参照されることがないことを、TopLinkランタイムに通知します。EISルート・ディスクリプタを使用すると、サポートされるすべてのマッピングを構成でき、そのディスクリプタを、EISインタラクションを使用して構成できます(109.8項「EISインタラクションの使用」を参照)。ただし、コンポジット・オブジェクト・マッピングまたはコンポジット・コレクション・マッピングを使用してEISルート・ディスクリプタを構成する場合は、定義する参照ディスクリプタはEISコンポジット・ディスクリプタである必要があります。これ以外のEISルート・ディスクリプタにすることはできません。

EISディスクリプタをコンポジット(デフォルト)として設定する場合は、EISディスクリプタの参照クラスがコンポジット・オブジェクト・マッピングまたはコンポジット・コレクション・マッピングによって参照されることを、TopLinkランタイムに通知します(第81章「EISコンポジット・オブジェクト・マッピングの構成」および第82章「EISコンポジット・コレクション・マッピングの構成」を参照)。EISコンポジット・ディスクリプタを使用すると、サポートされるすべてのマッピングを構成できますが、EISインタラクションを使用して構成することはできません。

コンポジットとして定義されたディスクリプタ(119.20項「子(ブランチまたはリーフ)クラス・ディスクリプタに関する継承の構成」を参照)で継承を構成できますが、その場合は継承ツリー内のすべてのディスクリプタがコンポジットである必要があります。集約ディスクリプタとクラス・ディスクリプタは、同じ継承ツリーに置くことはできません。詳細は、16.3.4項「集約およびコンポジット・ディスクリプタと継承」を参照してください。

また、TopLink Workbenchを使用してコンポジットとして構成したディスクリプタには、EJB情報を構成できません(119.18項「EJB CMPおよびBMP情報によるディスクリプタの構成」を参照)。

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

76.6.1 TopLink Workbenchを使用したルートまたはコンポジット・タイプとしてのEISディスクリプタの構成方法

EISディスクリプタをルートまたはコンポジットとして構成するには、次の手順を実行します。

  1. ナビゲータで、EISコンポジット・ディスクリプタを選択します。

  2. マッピング・ツールバーの「ルート」または「コンポジット」ディスクリプタ・ボタンをクリックします。

    または、ディスクリプタを選択してメニューから「選択」「ディスクリプタ・タイプ」「ルート」または「コンポジット」を選択するか、ナビゲータでディスクリプタを右クリックしてコンテキスト・メニューから「ディスクリプタ・タイプ」「ルート」または「コンポジット」と選択することもできます。

76.6.2 Javaを使用したルートまたはコンポジット・タイプとしてのEISディスクリプタの構成方法

JavaでEISディスクリプタをルートまたはコンポジットとして構成するには、ディスクリプタ修正メソッドを作成して(119.35項「修正メソッドの構成」を参照)、次のEISDescriptorメソッドを使用します。

  • EISディスクリプタをルート・ディスクリプタとして設定するには、EISDescriptorメソッドdescriptorIsNormalを使用します。

  • EISディスクリプタをコンポジット(非ルート)・ディスクリプタとして設定するには、EISDescriptorメソッドdescriptorIsAggregateを使用します。