Javaサブクラスの生成 - 7.3

Talend Data Mapperユーザーガイド

Version
7.3
Language
日本語
Product
Talend Big Data Platform
Talend Data Fabric
Talend Data Management Platform
Talend Data Services Platform
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発 > ジョブデザイン
Last publication date
2023-08-02

通常Javaクラスでは、フィールドまたはプロパティは、1つ以上のサブクラスを持つクラス(おそらく抽象)を参照します。このフィールド/プロパティをマッピングする場合、どの具体的クラスが入力に指定されていたかを判別し、希望する具体的クラスを出力に指定できることが重要です。サブクラス処理は、インポートに認識される(インポートされるJarファイルまたはフォルダーに含まれる)すべてのサブクラスに適用されることに注意する必要があります。指定されていないため、存在するがインポートに認識されないサブクラスがある場合があります。

サブクラス化の処理には、次の2つの異なる方法があります。
  1. すべてのサブクラスを順次発行する - これは、Javaサブクラスと組み合わされたマップの継承を使用する場合に便利(かつ必要)です。このメカニズムを使って、親マップ内のスーパークラスにエレメントをマッピングし、子の(継承された)マップ内のサブクラスにエレメントをマッピングし、マッピングしたサブクラスは正しく継承されます。この方法の短所は、出力用に発行するクラスの宣言を手動で行う割合が増えることです。出力クラスの宣言は、スーパークラスに関連付けられたclassエレメントの値でChoiceファンクションを変更することによって実行されます。これは自動的には実行されません。これはデフォルトオプションです。

    このオプション使用すると、(各Javaクラス用に生成されるすべてのストラクチャーに加えて)_Compositeで終わる名前を持つ継承ツリーのルート用のストラクチャーが生成されます。このコンポジットストラクチャーには、フィールド/プロパティの継承ツリー内に継承されたストラクチャーがすべて含まれるので、継承されたマップ内のストラクチャーとして使用できます。

  2. 各サブクラスの選択肢を発行する - 可能な各サブクラスは、サブクラス(およびすべてのスーパークラス)に関連付けられたすべてのプロパティを持つ選択エレメントのメンバーとして発行されます。これは、スーパークラスのプロパティが選択のメンバー間で複製されることを意味します。マップの継承を使用しない場合は、この方法でおそらく十分です。また、出力サブクラスに何かをマッピングする時に、どのサブクラス(メンバー)を出力にするかを指定するための適切な発行式が自動的に生成されるので、サブクラス化をより簡単に行えます。

次のオプションがサブクラスの生成用に提供されます。
  • [Generate a sequence of elements for all possible subclasses (Default)] (すべての可能なサブクラスにエレメントのシーケンスを生成する(デフォルト)) - すべての可能な直接および子孫のサブクラスに上記の最初の方法を実装します。

  • [Generate only the elements for the specified class] (指定したサブクラスにのみエレメントを生成する) - フィールド/プロパティによって指定されたクラスにのみ生成します。マッピングにサブクラスを使用しない場合は、このオプションを使用します。

  • [Generate a choice and a child for each direct and descendent subclass] (直接および子孫のサブクラスごとに選択肢および子を生成する) - フィールド/プロパティのクラスおよびすべての子孫のサブクラス間の選択肢を生成することにより、上述の2番目の方法を実装します。マッピングに子孫のサブクラスを含めることができる場合は、このオプションを使用します。

  • [Generate a choice and a child for each direct subclass] (直接のサブクラスごとに選択肢および子を生成する) - フィールド/プロパティのクラスおよびそのクラスの直接のサブクラスのみの間に選択肢を生成することにより、上記の2番目の方法を実装します。マッピングに直接のサブクラスのみ使用する場合、このオプションを使用します。