Enterprise JavaBeans (EJB) Data Mediator Service (DMS) は、 Service Data Objects (SDO) Java インターフェースで、EJB 照会の形での要求を受けて、データを各種タイプの DataObject を含む DataGraph としてデータを戻します。
これは、EJB 照会を受けて EJB オブジェクトの集合 (すべて同じタイプ) またはコンテナー管理パーシスタンス (CMP) 値の集合を戻す、通常の EJB finder または ejbSelect メソッドとは異なります。
DataGraph は、getGraph 呼び出しを使用して取得できます。これは、コンテナーにキャッシュされた EJB インスタンスから行うか、照会要求を SQL にコンパイルしてデータ・ソースに直接実行して行います。
更新された DataObject は、2 つのいずれかの方法で、applyChanges メソッドを使用して、データ・ストアに書き戻すことができます。 更新は SQL に変換して、直接データ・ソースに適用するか、EJB accessor メソッドにより書き戻すことができます。データ・ソースに直接書き込むことで、EJB の活動化を行わずに済み、パフォーマンスを向上できます。ただし、ビジネス・ロジックまたは EJB コンテナー機能をアプリケーションで必要とする場合は、EJB により書き戻すのが好ましい方法です。EJB により書き戻す場合は、ユーザー定義の MediatorAdapter を使用して、変更された DataObject の処理をカスタマイズすることができます。カスタマイズとしては、アプリケーション固有のオプティミスティック並行性制御や、EJB でのビジネス・メソッドの呼び出しによる更新の実行、DataObject の計算済みの値の更新、および EJBHome でのアプリケーション固有の create メソッドの呼び出しがあります。
更新処理は、DataGraph が最初にどのように検索されたかには依存しません。つまり、DataGraph をデータ・ソースから直接検索しながら、EJB または他の方法により据え置き更新を適用することが可能です。
いずれの更新方法でも、オプティミスティック並行性制御アルゴリズムが使用されます。更新時には、整合性フィールドとして指定されたフィールドが読み取られ、 現行値が DataObject のフィールドの古い値と等しいことが保証されます。
EJB Mediator 要求は、複合 EJB 照会であり、通常の EJB 照会の番号付きリストから構成されます。複合照会の各照会が SDO を定義します。照会の SELECT 文節は、DataObject で戻す CMP フィールドまたは式を指定します。WHERE 文節は、フィルター条件を指定します。 リストの最初の照会は、DataGraph の ROOT ノードとみなされます。照会の FROM 文節 (最初のもの以外) は、DataObject 間の参照の作成に使用される EJB 関係を指定します。照会からの DataGraph スキーマの派生についての詳細は、DataGraph スキーマ に記載されています。