JDBC DMS の動的および静的オブジェクト・タイプ
Service Data Object (SDO) 1.0 仕様の DataObjects では動的タイプと並んで静的タイプも使用できます。 特定の dataGraph スキーマがアプリケーション照会のすべての条件を満たすことがわかれば、静的 SDO コードを生成することにより、ランタイムでの利点が生まれる可能性があります。
動的タイプでは、DataGraph の形状を定義する情報がランタイムで構成されます。DataGraph スキーマは 作成時に提供されるメタデータから JDBC データ・メディエーター・サービス (DMS) によって作成されます。 JDBC DMS が動的タイピングで DataGraph を生成するために必要なのは、メタデータおよびデータ・ソースへの接続のみです。 これは、JDBC DMS を作成するためのデフォルトのメソッドです。
開発時の DataGraph の形状を知っておくと、コード・ジェネレーターを使用して、DataGraph ナビゲーションを単純化する、非常にタイプの細分化されたインターフェース (静的データ API コード) を作成したり、コンパイル時のエラーの検査を改善したり、パフォーマンスを向上させたりできます。 静的 SDO コードの生成元のメタモデルについて詳しくは、SDO 1.0 仕様の概要を参照してください。この概要には、仕様範囲の要件のリストが含まれています。ここに、静的データ API のサポートに関する簡単な説明があります。 非常にタイプの細分化された DataObjects を使用する場合も、動的 API は使用可能であることに気をつけてください。
コード・ジェネレーターを使用して、DataGraph のそれぞれの DataObject タイプに対するクラスを作成します。 それぞれのクラスには、 DataObject の各プロパティーに対する getter() および setter() メソッドが含まれています。 これにより、クライアントは、プロパティーの名前で引き渡しを行うのではなく、 タイプが異なっても支障のないメソッドを呼び出すことができます。例えば、 プロパティー DataObject.get("CUSTFIRSTNAME") を呼び出す代わりに、生成タイプに DataObject.getCustFirstName() メソッドを含むことができます。関連した DataObject にアクセスしている場合、 アクセサーは通常の DataObject ではなく、非常にタイプの細分化された DataObject を戻します。 例えば、DataObject.get("Customers_Orders") は DataObject を戻しますが、 DataObject.getOrders() はタイプ Order のオブジェクトを戻します。
JDBC DMS で静的タイピングを使用するには、メタデータ、データ・ソースへの接続、および DataGraph スキーマが JDBCMediatorFactory クラス create メソッドに提供される必要があります。 この場合、JDBC DMS メタデータは DataGraph の形状を決定しませんが、 バックエンド・データ・ソースおよび DataGraph にマップする方法について DMS 情報を提供します。
非常にタイプの細分化された DataObjects を使用する場合、照会が確実に DataGraph スキーマとマッチングすることが重要です。スキーマ内のデータ・オブジェクトおよびプロパティーの すべてを充てんするために照会は必要ありませんが、 照会は DataGraph スキーマで定義されていないデータ・オブジェクトまたはプロパティーを戻すことはできません。 例えば、DataGraph スキーマは Customer および Order DataObjects を定義する可能性がありますが、 照会は Customer オブジェクトのみを戻す可能性があります。また、Customer オブジェクトは ID、Name、および Address のプロパティーを定義する可能性がありますが、 照会はアドレスを戻さない可能性があります。この場合、アドレス・プロパティーの値はヌルで、 この値は applyChanges() メソッドが呼び出される際に、データベースで更新されません。 この例では、照会は Phone プロパティーを戻すことはできません。 Customer オブジェクト上でプロパティーとして定義されていないためです。照会がこれを試行する場合、 DMS は無効なメタデータ例外を戻します。