WebSphere Application Server for z/OS, Version 6.1   
             オペレーティング・システム: z/OS

             目次と検索結果のパーソナライズ化

データ・アクセスでの Java Database Connectivity データ・メディエーター・サービスの使用

次のステップではコード・サンプルを使用して、Java Database Connectivity (JDBC) データ・メディエーター・サービス (DMS) 向けのメタデータを作成する方法、および DMS DataGraph を インスタンス化する方法について説明します。

プロシージャー

  1. メタデータ・ファクトリーを作成します。 これは、メタデータ、テーブル、列、 フィルター、フィルター引数、データベース制約、キー、Order-by オブジェクト、および 関係の作成に使用することができます。
    MetadataFactory factory = MetadataFactory.eINSTANCE;
    Metadata metadata = factory.createMetadata();
  2. メタデータのテーブルを作成します。 2 つの方法でこれを行うことができます。 メタデータ・ファクトリーでテーブルを作成し、そのテーブルをすでに作成されているメタデータに追加するか、 または既存のメタデータに新規テーブルを追加することができます (つまり、新規テーブルが作成されます)。 この例では、実行するステップが少ない 2 番目のオプションを使用して、CUSTOMER というテーブルを作成します。
    Table custTable = metadata.addTable("CUSTOMER");
  3. メタデータのルート・テーブルを設定します。 同様に、これも 2 つの方法で行うことができます。 テーブルでそのテーブル自体をルートにすることを宣言する か、またはメタデータで独自のルート・テーブルを設定することができます。 最初のオプションの場合は、次のようにコード化します。
    custTable.beRoot();
    2 番目のオプションを使用する場合は、以下のようにコード化します。
    metadata.setRootTable(custTable)
  4. テーブルで列をセットアップします。 例のテーブルの名前は CUSTOMER です。 各列は、そのタイプを使用して作成されます。メタデータの列のタイプは、使用している JDBC ドライバーによってサポートされるタイプのみとなります。 使用している JDBC ドライバーがサポートするタイプについて疑問がある場合は、 JDBC ドライバーの資料を参照してください。
    Column custID = custTable.addIntegerColumn("CUSTID");
    custID.setNullable(false);
    この例では、この列の列オブジェクトを作成し、残りの列オブジェクトは作成しません。 この列が 1 次キーであり、残りの列が追加された後に、 テーブルの 1 次キーを設定するのに使用されるためです。 1 次キーをヌルにすることはできないため、custID.setNullable(false) がこれを発生させないようにします。 残りの列を追加するには、次のようにします。
    custTable.addStringColumn("CUSTFIRSTNAME");
    custTable.addStringColumn("CUSTLASTNAME");
    custTable.addStringColumn("CUSTSTREETADDRESS");
    custTable.addStringColumn("CUSTCITY");
    custTable.addStringColumn("CUSTSTATE");
    custTable.addStringColumn("CUSTZIPCODE");
    custTable.addIntegerColumn("CUSTAREACODE");
    custTable.addStringColumn("CUSTPHONENUMBER");
    
    custTable.setPrimaryKey(custID);
  5. 必要に応じて、他のテーブルを作成します。 この例では、注文のテーブルを作成します。 注文はそれぞれ 1 人の顧客によって行われます。
    Table orderTable = metadata.addTable("ORDER");
    
    Column orderNumber = orderTable.addIntegerColumn("ORDERNUMBER");
    orderNumber.setNullable(false);
    
    orderTable.addDateColumn("ORDERDATE");
    orderTable.addDateColumn("SHIPDATE");
    Column custFKColumn = orderTable.addIntegerColumn("CUSTOMERID");
    
    orderTable.setPrimaryKey(orderNumber);
  6. 関係を必要とするテーブルの外部キーを作成します。 この例では、各注文は、注文をした顧客を示す外部キーを備えています。 2 つのテーブルの関係を作成するために、まず、注文テーブルの外部キーを作成する必要があります。
    Key custFK = factory.createKey();
    custFK.getColumns().add(custFKColumn);
    
    orderTable.getForeignKeys().add(custFK);
    関係には 2 つのキーがあります。 親キーと子キーです。 特定の名前がないため、CUSTOMER_ORDER のデフォルトの連結は、この関係に使用される名前です。
    metadata.addRelationship(custTable.getPrimaryKey(), custFK);
    デフォルトの関係は、注文した顧客全員を含みます。 注文していない顧客も全員取得するには、以下の行も必要です。
    metadata.getRelationship("CUSTOMER_ORDER") 
                                  .setExclusive(false); 
    これで、2 つのテーブルが互いに関連付けられ、 特定の特性をもつ顧客を検索するために顧客テーブルにフィルターを追加することができます。
  7. 必要なフィルターを指定します。 この例では、顧客テーブルにフィルターを設定して、特定の条件 (注文したことがある、特定の姓) に当てはまる顧客をすべて検索します。
    Filter filter = factory.createFilter();
    filter.setPredicate("CUSTOMER.CUSTSTATE = ? AND CUSTOMER.CUSTLASTNAME = ?");
    
    FilterArgument arg1 = factory.createFilterArgument();
    arg1.setName("CUSTSTATE");
    arg1.setType(Column.STRING);
    filter.getFilterArguments().add(arg1);
    
    FilterArgument arg2 = factory.createFilterArgument();
    arg2.setName("CUSTLASTNAME");
    arg2.setType(Column.STRING);
    filter.getFilterArguments().add(arg2);
    
    custTable.setFilter(filter);
  8. 必要な Order by オブジェクトを追加します。 この例では、Order by オブジェクトを設定して、顧客のファ ーストネームによってソートします。
    Column firstName = ((TableImpl)custTable).getColumn("CUSTFIRSTNAME");
    OrderBy orderBy = factory.createOrderBy();
    orderBy.setColumn(firstName);
    orderBy.setAscending(true);
    metadata.getOrderBys().add(orderBy);
    これによって、この JDBC DMS のメタデータの作成が完了します。
  9. データベースへの接続を作成します。 この例では、データベースへの接続の作成は示していません。SDO クライアントが この接続を作成する connect() メソッドを呼び出すことを前提としています。
  10. JDBC DMS オブジェクト (DataGraph) をインスタンス化し、初期化します。 SDO クライアントがこれらのアクションを実行します。 この例では、次のようになります。
    ConnectionWrapperFactory factory = ConnectionWrapperFactory.soleInstance;
    connectionWrapper = factory.createConnectionWrapper(connect());
    JDBCMediatorFactory mFactory = JDBCMediatorFactory.soleInstance;
    JDBCMediator mediator = mFactory.createMediator(metadata, connectionWrapper);
    DataObject parameters = mediator.getParameterDataObject();
    parameters.setString("CUSTSTATE", "NY");
    parameters.setString('CUSTLASTNAME', 'Smith');
    DataObject graph = mediator.getGraph(parameters);
    これで、DataGraph が作成されたので、好きなように情報を操作することができます。簡単な例は、例: DataGraph オブジェクトでのデータの操作 にあります。
  11. 変更した情報を DMS に送信し、データベースを更新します。



サブトピック
例: DataGraph オブジェクトでのデータの操作
関連資料
JDBC DMS の動的および静的オブジェクト・タイプ
JDBC メディエーター生成済み照会
JDBC メディエーター提供照会
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 9:12:22 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/ae/tdat_jdbcmeduse.html