DataGraph スキーマ
EJB メディエーターによって作成された DataGraph スキーマ
照会のメディエーターによって作成されたスキーマは、各照会ステートメントについて 1 つの Eclass で構成されます。 Eclass の名前は Enterprise JavaBeans (EJB) の Abstract Schema Name (ASN) です。 Eclass の Eattributes は、照会ステートメントによって戻されるコンテナー管理パーシスタンス (CMP) フィールドまたは式に対応します。
静的 DataObjects の場合、createMediator 呼び出しで Map 引数が使用されるのであれば、Eclass 名が異なっていてもかまいません。
FROM 文節または XREL 文節で指定された 各 EJB 関係は、スキーマに対する Ereference を追加します。 EJB 関係は、単一方向であっても双方向であってもかまいません。 ただし、すべての Ereferences は双方向として定義されます。これは、更新の際に効率的に DataGraph を移動する必要があるからです。 逆関係名は単一方向の EJB 関係の場合に生成されます。 生成される名前のフォーマットは、<ASName_source><ASName_target> となります。 例えば、ASNames が EmpBean および DeptBean であり、単一方向関係が EmpBean から DeptBean へ向かう dept である場合、生成される逆方向名は DeptBeanEmpBean です。
- DataObject Eclass 名は、対応する EJB 抽象スキーマ名 (ASN) です。
- DataObject 属性名およびタイプは、照会 SELECT 文節内の式の名前とタイプです。
- DataObject 参照名とタイプは、FROM 文節内で参照された EJB 関係から来ます。
DataGraphRoot という Eclass 名を持つダミー DataObject も作成され、すべての DataObjects への包含参照を持っています。参照は多値で、EJB ASN 名を使用します。
DataObject root = m.getGraph( parms );
root.getType().getName(); // this would return the string "DataGraphRoot"
List depts = (List) root.get("DeptBean");
// the list of all DeptBean SDOs in the DataGraph
List emps = (List) root.get("EmpBean");
// the list of all EmpBean SDOs in the DataGraph
DataGraph 包含パターン
サービス・データ・オブジェクト (SDO) 間の参照は、包含参照として定義できます。この場合、1 つの SDO が 削除されると、削除はすべての包含 SDO にカスケードされます。 また、DataGraph が XML 文書としてシリアライズされると、包含 SDO も親 SDO 内にネストされます。 非包含参照は、XML 文書内でパス式として表されます。
包含は DataGraph スキーマ内で定義されなければなりません。 メディエーターがスキーマを定義すると、(DataGraphRoot という名前の) ルート SDO が他のすべての SDO を含みます。 EJB 関係は非包含 SDO 参照として定義 されます。
- ROOT_CONTAINS_ALL
- このパターンでは、ルートであるダミー SDO があります。どの EJB にも対応していないという意味でダミーです。 目的は、その他すべての SDO を含めることです。メディエーターがグラフ・スキーマを生成する場合、ダミー・ルートのクラス名は DataGraphRoot になり、EJB ASN 名を名前に持つ参照を含みます。 呼び出し元が静的スキーマを使用する場合、ルートは任意の名前を持つことができます。 ルートの Eclass は createMediator 呼び出しの際に渡されます。
- ROOT_CONTAINS_SOME
- このパターンは静的スキーマにのみ該当します。グラフ・ルートであるダミー SDO も依然として存在します。 他の SDO は、照会ステートメントで使用される EJB 関係に対応する Ereference で組み込まれるか、 ダミー・ルートで組み込まれる必要があります。
- NO_DUMMY ROOT
- このパターンは静的スキーマにのみ該当します。ダミー・ルートはありません。 ルート SDO は、単一インスタンスのみを戻す必要がある最初の照会ステートメントに対応します。 非 root SDO は、照会ステートメントに使用される EJB 関係に対応する Ereference で組み込まれる必要があります。