データベースアダプタ用 OTD の開発

新しい SQL Server の作成

データベース OTD ウィザードは、外部データ発信元に接続し、対応するオブジェクト型定義を作成することによって OTD を生成します。OTD ウィザードでは、テーブルとストアドプロシージャーまたは事前定義文の任意の組み合わせに基づいて OTD を作成できます。外部データ発信元のテーブルに基づいて、フィールドノードが OTD に追加されます。Java メソッドノードおよびパラメータノードは、適切な JDBC 機能を提供するために追加されます。Java メソッドの詳細については、JDBC の開発者向けリファレンスを参照してください。


注 –

データベース OTD はメッセージ可能ではありません。メッセージ可能 OTD の詳細については、『Sun Enterprise Service Bus User’s Guide』を参照してください。


SQL Server アダプタ用の新しい OTD を作成するには、次の手順を実行する必要があります。

ウィザードタイプの選択

新規オブジェクト型定義ウィザードで、OTD の構築に必要なウィザードのタイプを選択します。

Procedureウィザードタイプを選択する

  1. プロジェクトツリーで、プロジェクトを右クリックし、ショートカットメニューから「オブジェクト型定義の作成」を選択します。

  2. 「OTD ウィザードの選択」ウィンドウで、「SQL Server データベース」を選択し、「次へ」をクリックします (次の図を参照)。

    OTD ウィザードの選択

データベースへの接続

Procedureデータベースに接続する

  1. 「接続情報」フレーム内で、SQL Server データベースの接続情報を入力します。

    必須のデータベース接続フィールドは次のとおりです。

    • 「ホスト名」 – データベースサービスホスト名。

    • 「ポート ID」 – データベースサービス接続ポートの ID または番号。

    • 「データベース名」 – SQL Server データベースの名前。

    • 「ユーザー名」 - 有効な SQL Server データベースユーザー名。

    • 「パスワード」 - 前述のユーザー名のパスワード。

      データベース接続情報
  2. 次へ」をクリックします。「データベースオブジェクトの選択」ダイアログボックスが表示されます。

データベースオブジェクトの選択

Procedureデータベースオブジェクトを選択する

  1. データベースオブジェクトを選択するときに、.otd ファイルに含めるテーブルビュー手続き事前定義文を自由に組み合わせて選択できます。


    注 –

    ビューは読み取り専用であり、情報提供のみを目的としています。


    図 1–33 データベースオブジェクトの選択

    データベースオブジェクトの選択

  2. 次へ」をクリックして続行します。

テーブル/ビュー/エイリアスの選択

Procedureテーブル/ビュー/エイリアスを選択する

  1. テーブル/ビュー/エイリアスの選択」ウィンドウで、「追加」をクリックします (次の図を参照)。

    テーブル/ビュー/エイリアスの選択
  2. テーブルの追加」ウィンドウで、選択条件として「テーブルのみ」、「ビューのみ」、「両方」のいずれかを選択し、さらに、システムテーブルを含めるかどうかを指定します。

  3. テーブル/ビュー名のドロップダウンリストから、データベーステーブルの場所を選択し、「検索」をクリックします (次の図を参照)。

    データベースウィザード - すべてのスキーム
  4. 目的のテーブルを選択し、「了解」をクリックします。選択したテーブルが、「選択されたテーブル/ビュー/エイリアス」ウインドウに追加されます (次の図を参照)。

    「選択されたテーブル/ビュー/エイリアス」ウィンドウと選択されたテーブル
  5. 選択されたテーブル/ビュー/エイリアス」ウィンドウで、選択されたテーブルを確認します。選択されたテーブルまたはビューに変更を加える場合は、「変更」をクリックします。何も変更を加えない場合は、「次へ」をクリックして続行します。

  6. テーブル/ビューの列」ウィンドウで、テーブルの列を選択または選択解除できます。また、各テーブルのデータ型を変更するには、そのデータ型を強調表示させて、ドロップダウンリストから別のデータ型を選択します。テーブルの列を変更する場合は、「変更」をクリックします。

    ドライバがデータ型を検出できない場合、通常はデータ型として「その他」が表示されます。その場合は、列データのタイプに適したデータ型に変更することをお勧めします。

    テーブル/ビューの列
  7. データ型、精度/長さ、またはスケールを変更するには、「詳細」をクリックします。テーブルの選択が完了したら、「了解」をクリックします。通常は、これらの設定を変更する必要はありません (次の図を参照)。

    テーブル/ビューの列: 詳細
  8. 事前定義文パッケージを使用する場合は、「生成される Java コードではテーブル/ビューの完全修飾名を使用します。」を選択します。

手続きの選択

Procedure手続きを選択する

  1. 手続きの選択と結果セットおよびパラメータ情報の指定」ウィンドウで、「追加」をクリックします。

    手続きの選択と結果セットおよびパラメータ情報の指定
  2. 手続きの選択」ウィンドウで、手続きの名前を入力するか、またはドロップダウンリストからテーブルを選択します。「検索」をクリックします。ワイルドカード文字も使用できます。

  3. 表示された「手続きの選択」リストボックスで、手続きを選択します。「了解」をクリックします。

    手続きの追加
  4. 選択した手続きに変更を加える場合は、「続きの選択と結果セットおよびパラメータ情報の指定」ウィンドウで「パラメータの編集」をクリックします (次の図を参照)。

    手続きパラメータ
  5. データ型を復元するには、「復元」をクリックします。操作が完了したら、「了解」をクリックします。

  6. OTD での Resultset ノードの生成方法を選択するには、「Resultsets の編集」をクリックします。

  7. 生成する Resultset ノードのタイプを追加するには、「追加」をクリックします。

    ResultSet の編集

    データベースウィザードでは、3 とおりの方法でストアドプロシージャーの ResultSet ノードを生成できます。「実行時」モード、「手動で」モード、および「アシスタンス」モードです。

    • 「実行時」モード - 「実行時」モードでは、、指定されたストアドプロシージャーをデフォルト値で実行して ResultSet を生成します。ストアドプロシージャーのビジネスロジックに基いて、0 個以上の ResultSet を実行結果として返すことができます。複数の ResultSet がある場合に、「実行時」モードですべての ResultSet が返されないときは、その他のモードを使用して ResultSet ノードを生成してください。

    • 「アシスタンス」モード - 「アシスタンス」モードでは、ユーザーがクエリーを指定し、それを実行して ResultSet ノードを生成できます。この操作を容易にするために、データベースウィザードは、指定されたストアドプロシージャーの内容を取得して表示しようとします。ただし、内容の取得は、全てのタイプのストアドプロシージャーでサポートされているわけではありません。ストアドプロシージャーは、SQL と外部の 2 種類に大きく分類できます。SQL ストアドプロシージャーは、CREATE PROCEDURE SQL 文を使用して作成されます。一方、外部ストアドプロシージャーは、Java などのホスト原語を使用して作成されます。外部ストアドプロシージャーでは、実行プランがデータベースに保存されないため、内容の取得はできません。「アシスタンス」モードを使用するときは、クエリーを実行する前に、テーブル名までを含めた実行文を強調表示させます。

    • 「手動で」モード - 「手動で」モードでは、もっとも柔軟な方法で結果セットノードを生成できます。このモードでは、ユーザーがノード名、元の列名、およびデータ型を手動で指定できます。この方法の欠点の 1 つは、ユーザーが元の列名やデータ型を知っている必要があることです。この方法は常に使用可能とは限りません。たとえば、次のクエリーに「3*C」という列名があります。


      SELECT A, B, 3*C FROM table T

      これはデータベースによって生成されます。この場合は、「アシスタンス」モードの方が適しています。

      データベースウィザードの「実行」モードで生成された ResultSet を変更する場合は、インデックスがストアドプロシージャーと一致していることを確認する必要があります。これにより、ResultSet インデックスが確実に保持されるようにします。

  8. 手続きの選択と結果セットおよびパラメータ情報の指定」ウィンドウで、「次へ」をクリックして操作を続行します。

事前定義文の追加

事前定義文オブジェクトを OTD に追加します。


注 –

事前定義文を使用するときは、ResultsAvailable() メソッドは常に true を返します。このメソッドは使用可能ですが、while ループでは使用しないでください。while ループで使用すると、実行時に無限ループに入ってしまい、システムのすべての CPU が停止状態になります。使用する場合は、if 文でのみ使用します。next() メソッドによるループで ResultSet を処理できます。


Procedure事前定義文を追加する

  1. 事前定義ステートメントの追加」ウィンドウで、「追加」をクリックします。

    図 1–34 事前定義ステートメント

    事前定義ステートメント

  2. 事前定義文の名前を入力するか、または「SQL ステートメント」ウィンドウ内でクリックして SQL 文を作成します。文の作成が完了したら、「名前をつけて保存」をクリックして文の名前を指定します。この名前は、OTD のノードとして表示されます。「了解」をクリックします (次の図を参照)。

    図 1–35 事前定義 SQL ステートメント

    事前定義 SQL ステートメント

  3. 事前定義ステートメントの追加」ウィンドウに、事前定義文に割り当てた名前が表示されます。パラメータを編集するには、「パラメータの編集」をクリックします。データ型を変更するには、「タイプ」フィールドをクリックして、リストから別のタイプを選択します。


    注 –

    2 つ以上のテーブルを使用する事前定義文を実行する場合、複数のテーブルに同じ列名があるときは、事前定義文にテーブル名修飾子を入れて OTD を構築します。


  4. 文にパラメータを追加する場合は、「追加」をクリックします。また、パラメータを削除する場合は、その行を強調表示させて「削除」をクリックします。「了解」をクリックします (次の図を参照)。

    図 1–36 事前定義文パラメータの編集

    事前定義文パラメータの編集

  5. ResultSet 列を編集するには、「ResultSet 列の編集」をクリックします。名前とタイプも編集可能ですが、名前は変更しないことをお勧めします。名前を変更すると、ResultSet とデータベースの間で整合性が失われます。「了解」をクリックします (次の図を参照)。


    注 –

    OTD ウイザードでは、複数のテーブルで同じ列名を使用する複雑な事前定義文で OTD を作成することはできません。この問題は、列名エイリアスを使用するように SQL 文を変更することによって解決されます。


    図 1–37 ResultSet 列

    ResultSet 列

  6. 「事前定義ステートメントの追加」ウィンドウで、「了解」をクリックします。

OTD 名の指定

Java CAPS IDE に表示する OTD の名前を指定します。

ProcedureOTD 名を指定する

  1. OTD の名前を入力します。OTD には、選択されたテーブルと、生成されたクラスのパッケージ名が含まれます (次の図を参照)。

    図 1–38 OTD 名の指定

    OTD 名の指定

  2. 次へ」をクリックします。

選択内容の確認

新しい OTD に関する選択内容を確認します。

ProcedureOTD の選択内容を確認する

  1. OTD の概要を確認します。間違った内容がある場合は、「戻る」をクリックし、その情報を修正します。

  2. OTD の情報に問題がない場合は、「完了」をクリックして OTD の生成を開始します。次の図を参照してください。

    結果の OTD が Java CAPS IDE に表示されます。

    図 1–39 データベースウィザード - 概要

    データベースウィザード - 概要