WebSphere Application Server 7.0 で稼働中の Java Persistence API (JPA) アプリケーションから SQL ステートメントを静的に実行する

ワークベンチは、wsdb2gen コマンドを実行して pureQueryXML ファイルを作成する機能、SQL ステートメントをバインドする機能、およびそれらのステートメントを JPA アプリケーションの実行時に静的に実行する機能を備えています。

始める前に

システムがハードウェア要件およびソフトウェア要件を満たした状態にしてください。 InfoSphere™ Optim™ pureQuery Runtime のシステム要件を参照してください。

アプリケーションが、ワークベンチの JPA プロジェクトに存在すること。アプリケーションを JPA プロジェクトにインポートするか、 ワークベンチでアプリケーションを開発することができます。アプリケーションを開発するには、http://www.eclipse.org/webtools/dali/ で Eclipse Dali JPA Tools のユーザー・ガイドを参照してください。『Apache OpenJPA User Guide』については、 http://openjpa.apache.org/documentation.html の「OpenJPA Documentation」を参照してください。

バインド操作の実行前に、以下の前提条件を満たしていることを確認してください。
  • pureQuery StaticBinder ユーティリティーを呼び出すユーザーの特権設定に、以下の特権のいずれかが含まれること。
    • SYSADM 権限
    • DBADM 権限
    • パッケージが存在しない場合には、BINDADD 特権に加え、以下のいずれかの特権。
      • CREATEIN 特権
      • DB2® for z/OS®: 対象となるコレクションまたはすべてのコレクションに対する PACKADM 権限
      • DB2 Database for Linux, UNIX, and Windows: パッケージのスキーマ名が存在しない場合には、データベースに対する IMPLICIT_SCHEMA 権限
    • DB2 for z/OS: パッケージが存在する場合、パッケージに対する BIND 特権。
    • DB2 Database for Linux, UNIX, and Windows: パッケージが存在する場合には次が必要です。
      • スキーマに対する ALTERIN 特権
      • パッケージに対する BIND 特権
  • DB2 for Linux, UNIX, and Windows: アプリケーションでの静的 SQL ステートメントのコンパイルに必要な特権すべても、ユーザーに付与される必要があります。グループに付与される特権は、静的ステートメントの許可検査では使用されません。 ユーザーに SYSADM 権限があるものの、バインドを完了するための明示特権がない場合、DB2 データベース・マネージャーは明示的な DBADM 権限を自動的に付与します。

このタスクについて

このタスクのステップは、WebSphere® Application Server 7.0 の資料に含まれる以下のトピックのステップ 4 を詳細にしたものです。

手順

Websphere Application Server 7.0 を使用する JPA アプリケーション内の SQL ステートメントの静的実行を構成するには、次のようにします。

  1. JPA プロジェクトで pureQuery サポートを有効にします。 JPA プロジェクトは pureQuery をサポートするように構成する必要があります。
    1. JPA プロジェクトを右クリックして、「データ・アクセス開発 (Data Access Development)」をクリックします。 次に、「データ・アクセス開発サポートの追加 (Add Data Access Development Support)」または 「pureQuery サポートの追加」をクリックします。データ・アクセス開発サポートの追加 (Add Data Access Development Support)」ウィザードの手順に従います。 ウィザードのコントロールについては、ウィザードの左下隅で ヘルプをクリックしてください。 ヘルプが表示されない場合は、「pureQuery サポートの追加」ページのコントロールを選択して、ヘルプを再度クリックします。

    完了」をクリックすると、ワークベンチによって JPA プロジェクト内に dataAccessFolder フォルダーが作成されます。 このフォルダーには、Default.bindProps ファイルが含まれます。

    pureQuery 以外の API アプリケーション内にある SQL ステートメントのキャプチャーおよびバインドを無効にして、JPA プロジェクトから pureQuery の サポートを削除する場合は、プロジェクトを右クリックして、 「データ・アクセス開発 (Data Access Development)」>「pureQuery サポートの除去」を選択してから、 「データ・アクセス開発 (Data Access Development)」>「データ・アクセス開発サポートの削除 (Remove Data Access Development Support)」を 選びます。

  2. com.ibm.ws.jpa.jar ファイルをプロジェクトにインポートして、ビルド・パスに追加します。 このファイルは WebSphere Application Server 7.0 に付属しています。
  3. JPA アプリケーション用の pureQueryXML ファイルを作成します。 それには、JPA プロジェクト内のファイル persistence.xml を右クリックして、 「データ・アクセス開発 (Data Access Development)」>「pureQuery XML ファイルの生成 (Generate pureQuery XML Files)」を 選択します。 このステップは、wsdb2gen コマンドを手動で実行することの代わりとなります。
  4. オプション: pureQueryXML ファイル内の SQL ステートメントおよびそれらについての情報を表示します。
    パッケージ・エクスプローラーでプロジェクト・フォルダーを選択するか、プロジェクト内の任意のファイルを選択すると、「SQL アウトライン」ビューにデータが追加されます。 ビューが開かれていない場合は、プロジェクトを右クリックして、「データ・アクセス開発 (Data Access Development)」>「SQL アウトラインの表示」を選択します。
    • 「データベース」ページには、SQL ステートメントから参照されるデータベース・オブジェクトが表示されます。
    • 「Java」ページには、取り込まれた SQL ステートメントを含む Java ファイルが表示されます。プロジェクトに Java ソース・ファイルが含まれる場合、SQL ステートメントをダブルクリックして、対応するソース・ファイルを Java エディターで開くことができます。
    • 「SQL」ページには、取り込まれた SQL ステートメントのためにワークベンチで推奨される DB2 パッケージが表示されます。この時点ではバインド操作がまだ実行されていないため、ビューに表示されるのは実際のバインド実行時にワークベンチが作成することになるパッケージのみです。
  5. オプション: アプリケーションの pureQueryXML ファイルを編集します。
  6. StaticBinder ユーティリティーが取り込まれた SQL ステートメントを DB2 パッケージにバインドする方法を判別するオプションを指定することで、 Default.bindProps ファイルを編集します。
  7. 以下のいずれかのステップにしたがって、取り込んだ SQL ステートメントをパッケージにバインドします。
    • フォルダー dataAccessFolder に含まれる個々の pureQueryXML ファイルを右クリックして、 「バインド」を選択します。
    • プロジェクト・フォルダーを右クリックして、「データ・アクセス開発 (Data Access Development)」>「アプリケーションのバインド (Bind Application)」を選択します。 この方法により、該当するすべての pureQueryXML ファイルにある SQL を一度にバインドできます。
    「接続の選択」ウィンドウが開くので、使用する DB2 データベースを選択します。Java プロジェクトに関連付けられていないデータベースを選択することができます。
    重要: オフラインでの作業中はバインド操作を実行できません。バインド先にする DB2 データベースに接続している必要があります。

    このステップの後に pureQueryXML ファイルの SQL ステートメントをさらに取り込んだ場合には、そのファイルに対してバインド操作を再実行する必要があります。

    1. 以下のいずれかのステップにしたがって、取り込んだ SQL ステートメントをパッケージにバインドします。
      • フォルダー dataAccessFolder に含まれる個々の pureQueryXML ファイルを右クリックして、 「バインド」を選択します。
      • プロジェクト・フォルダーを右クリックして、「データ・アクセス開発 (Data Access Development)」>「アプリケーションのバインド (Bind Application)」を選択します。 この方法により、該当するすべての pureQueryXML ファイルにある SQL を一度にバインドできます。
      「接続の選択」ウィンドウが開くので、使用する DB2 データベースを選択します。Java プロジェクトに関連付けられていないデータベースを選択することができます。
      重要: オフラインでの作業中はバインド操作を実行できません。バインド先にする DB2 データベースに接続している必要があります。

      このステップの後に pureQueryXML ファイルの SQL ステートメントをさらに取り込んだ場合には、そのファイルに対してバインド操作を再実行する必要があります。

  8. オプション: DB2 パッケージおよびそれらに含まれる SQL ステートメントを表示します。
    プロジェクト・フォルダーを選択し、「SQL アウトライン」ビューの「SQL」ページを表示します。 ここで、必要な DB2 パッケージが作成済みであることを確認します。
    パッケージのプロパティーを変更するには、以下を実行します。
    1. Default.bindProps ファイルを編集します。
    2. バインド操作を繰り返します。

    Java ソースまたはアプリケーション内の SQL ステートメントをさらに編集することも可能です。編集後、pureQueryXML ファイルを削除して再生成してください。その後、バインド操作を再実行してください。

  9. アプリケーションを実行してテストします。 アプリケーション用の SQL ステートメントが、ドライバー用のパッケージがあるコレクションにバインドされている場合には、このステップを実行する必要はありません。

次のタスク

「SQL Outline」ビューの使用は、SQL ステートメントで生じる可能性のある問題のトラブルシューティングに役立ちます。留意すべき点は、SQL ステートメントやアプリケーションの他のエレメントに何らかの変更を加えた場合、pureQueryXML ファイルを再生成し、DB2 パッケージを再作成しなければならないことです。

アプリケーションを JAR ファイルに展開する場合: JAR ファイルにアプリケーションを展開する前に、バインドする SQL ステートメントを含む すべての pureQueryXML ファイルの項目が Default.bindProps ファイルに含まれていることを確認してください。 pureQuery StaticBinder ユーティリティーは、アプリケーションを展開するデータベースのコマンド行から実行する必要があり、 Default.bindProps ファイルにリストされている pureQueryXML ファイルに対してのみ動作します。

ファイルを追加するには、以下のようにします。
  1. プロジェクト内のフォルダー dataAccessFolder に入っている Default.bindProps ファイルを右クリックして、 「データ・アクセス開発 (Data Access Development)」>「項目の追加または除去」を選択します。
  2. 「項目の追加または除去」ウィンドウで、 必要な pureQueryXML ファイルすべてを追加します。

フィードバック