8.8. データマッパーのデータタイプおよびコレクション
データマッパーでは、フィールドは以下のいずれかになります。
-
単一の値を格納する プリミティブ タイプ。プリミティブタイプの例には、
boolean、char、byte、short、int、long、float、およびdoubleがあります。プリミティブタイプは単一のフィールドであるため拡張できません。 - 異なるタイプの複数のフィールドで設定される コンプレックス タイプ。コンプレックスタイプの子フィールドを設計時に定義します。データマッパーではコンプレックスタイプを拡張して子フィールドを表示できます。
各タイプのフィールド (プリミティブおよびコンプレックス) をコレクションとすることもできます。コレクションは、複数の値を持つことができる単一のフィールドです。コレクションのアイテム数はランタイム時に決定されます。設計時、データマッパーではコレクションは
で示されます。コレクションがデータマッパーインターフェイスで拡張可能かどうかは、タイプにより決定されます。コレクションがプリミティブタイプの場合、拡張できません。コレクションがコンプレックスタイプの場合、データマッパーを展開し、コレクションの子フィールドを表示できます。各フィールドをマップ元またはマップ先とすることができます。
以下に例を示します。
-
idはプリミティブタイプのフィールド (int) です。実行時に、社員はIDを 1 つだけ持てます。たとえば、ID=823のみを持てます。そのため、IDはコレクションではないプリミティブタイプです。データマッパーでは、IDは拡張できません。 -
emailはプリミティブタイプのフィールド (文字列) です。実行時に、社員は複数のemailの値を持つことができます。たとえば、email<0>=aslan@home.comとemail<1>=aslan@business.comを持つことができます。そのため、emailはコレクションでもあるプリミティブタイプです。データマッパーは、
を使用して、emailフィールドがコレクションであることを示しますが、emailはプリミティブタイプであるため (子フィールドがない)、拡張できません。 -
employeeは、IDやemailを含む複数の子フィールドを持つ複雑なオブジェクトフィールドです。会社には多くの従業員がいるため、起動時にemployeeはコレクションでもあります。
設計時に、データマッパーは
を使用して employeeがコレクションであることを示します。employeeフィールドは、子フィールドが含まれるコンプレックスタイプであるため、拡張可能です。