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

戻る
戻る
 
次へ
次へ
 

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

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

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

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

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

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

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

オプション タイプ TopLink Workbench Java

「XMLスキーマ・ネームスペースの構成」


基本

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

「XMLスキーマ参照の構成」


基本

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

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


基本

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

「デフォルトのルート要素の構成」


基本

サポートされている

サポートされていない


「主キーの構成」脚注1

基本

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

「読取り専用ディスクリプタの構成」脚注1


基本

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

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


詳細

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

「ディスクリプタ・エイリアスの構成」


詳細

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

「ディスクリプタ・コメントの構成」


詳細

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

「レコード形式の構成」


基本

サポートされていない


サポートされている

「クラスの作成」


基本

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

「ディスクリプタ・レベルでの名前付き問合せの構成」脚注1


詳細

サポートされている


サポートされている


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


詳細

サポートされている


サポートされている


「キャッシュ・リフレッシュ機能の構成」脚注1


詳細

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

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


詳細

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

「ディスクリプタ・レベルでのキャッシュ分離機能の構成」


詳細

サポートされている


サポートされている


「ディスクリプタ・レベルでのキャッシュ・コーディネーションの変更伝播機能の構成」


詳細

サポートされている


サポートされている


「ディスクリプタ・レベルでのキャッシュ有効期限の構成」


詳細

サポートされている


サポートされている


「ディスクリプタ・レベルでのキャッシュ存在チェックの構成」


詳細

サポートされている


サポートされている


「EJB情報によるディスクリプタの構成」


詳細

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

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


基本

サポートされている


サポートされている


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


詳細

サポートされている


サポートされている


「親(ルート)ディスクリプタに関する継承の構成」


詳細

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

「サブクラスでの継承属性マッピングの構成」


詳細

サポートされている


サポートされている


「イベント・ハンドラとしてのドメイン・オブジェクト・メソッドの構成」


詳細

サポートされている


サポートされている


「イベント・ハンドラとしてのディスクリプタ・イベント・リスナーの構成」


詳細

サポートされている


サポートされている


「ロック・ポリシーの構成」脚注1


詳細

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

「ReturningPolicyの構成」


詳細

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

「インスタンス化ポリシーの構成」


詳細

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

「コピー・ポリシーの構成」


詳細

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

「変更ポリシーの構成」


詳細

サポートされていない


サポートされている


「ラッパー・ポリシーの構成」


詳細

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

「修正メソッドの構成」


詳細

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

「マッピングの構成」


基本

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

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

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

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

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

TopLink Workbenchの使用

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

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

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

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

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

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

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

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

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

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

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

Javaの使用

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

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

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


注意:

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

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

TopLink Workbenchの使用

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

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

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

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

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

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

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

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

ルート要素の選択

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

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

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

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

Javaの使用

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

レコード形式の構成

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

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

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

表28-2 EISレコード形式

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

useMappedRecordFormat

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

useIndexedRecordFormat

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

useXMLRecordFormat

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

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

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


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

Javaの使用

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

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

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

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

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

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

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

TopLink Workbenchを使用すると、インタラクションごとに1つの問合せを定義したXMLInteractionオブジェクトを作成できます(「TopLink Workbenchの使用」を参照)。

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


注意:

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

TopLink Workbenchの使用

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

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

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

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

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

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

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

フィールド 説明
インタラクションのタイプ TopLink Workbenchを使用する場合は、「XMLインタラクション」のみを使用できます。このフィールドは変更できません。
ファンクション名 このタイプのコール(「オブジェクトの読取り」または「すべて読取り」)がEISに対して起動するEISファンクションの名前。
入力レコード名 入力レコードの作成時に、J2Cアダプタに渡される名前。
入力ルート要素名 入力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から)。

Javaの使用

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

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

例28-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);
}

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

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

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

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

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

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

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

TopLink Workbenchの使用

ルートまたはコンポジットとしてのディスクリプタの構成

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

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

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

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

Javaの使用

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

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

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