システムがハードウェア要件およびソフトウェア要件を満たした状態にしてください。 InfoSphere™ Optim™ pureQuery Runtime のシステム要件を参照してください。
クライアント最適化では、JDBC ドライバーがアプリケーションと相互作用する方法を変更します。上記のコンポーネントやコードの変更は必要ありません。
pureQuery 以外の API アプリケーション内にある SQL ステートメントを静的に実行するには、以下のようにします。
この例では、以下のような簡単な pureQuery 以外の API アプリケーションを使用します。
import java.sql.*; import com.ibm.db2.jcc.*; public class Sample1 { public static void main (String[] args) throws SQLException, ClassNotFoundException { Connection jdbcCon=null; try { Class.forName("com.ibm.db2.jcc.DB2Driver"); jdbcCon=DriverManager.getConnection( "jdbc:db2://svl01:500/DB2M", "user01", "myPass"); } catch (SQLException e) { System.out.println(e); } try { PreparedStatement pStmt = jdbcCon.prepareStatement( "INSERT INTO ADMF001.VIEW1(C1, C3, C2) VALUES(?,?,?)"); pStmt.setString(1, "1"); pStmt.setInt(2, 3); pStmt.setDouble(3, 2.0e3); pStmt.executeUpdate(); pStmt.close(); Statement selStmt = jdbcCon.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); ResultSet rs = selStmt.executeQuery( "SELECT * FROM ADMF001.VIEW1 WHERE C2 > 200"); System.out.println("moving to the first row"); if (rs.next()) { System.out.println("deleting it"); Statement stmt = jdbcCon.createStatement(); stmt.executeUpdate( "DELETE FROM ADMF001.VIEW1 WHERE CURRENT OF " + rs.getCursorName()); stmt.close(); } selStmt.close(); } catch (SQLException e) { System.out.println( "Sample1: " + e ); } jdbcCon.close(); } //end main } // end class Sample1
pdq.captureMode=ON pdq.pureQueryXml=Sample1Cptr.pdqxmlアプリケーションの完了後、現行ディレクトリーに pureQueryXML ファイルが Sample1Cptr.pdqxml. という名前で存在します。
1 つの pureQueryXML ファイル内のすべてのステートメントが、StaticBinder によって一緒にパッケージ化されます。そのため、ご使用のアプリケーションが複数のデータベースに接続して SQL を実行する場合には、それぞれの Connection URL または DataSource オブジェクトごとに 1 つの pureQueryXML ファイルを作成する必要があります。
大規模なアプリケーションでは、徐々に SQL ステートメントをキャプチャーするように選択できます。 初期実行の際に幾らかの SQL ステートメントをキャプチャーし、その後の実行の際に残りの SQL ステートメントを同じファイル (複数も可) にキャプチャーできます。ただし、アプリケーションのソースを変更した場合 (複数の pureQueryXML ファイルをセットアップするときに異なる Connection オブジェクトの URL を変更する場合は除く)、pureQueryXML ファイルを削除してから、キャプチャー・プロセスを再開しなければなりません。
pureQuery 以外の API アプリケーションのテスト中に SQL ステートメントをキャプチャーしてください。その場合、アプリケーションを実稼働環境にデプロイする際に使用する予定のデータベースと類似のデータベースに対して、それらの SQL ステートメントを実行します。
java com.ibm.pdq.tools.Configure -pureQueryXml Sample1Cptr.pdqxml –rootPkgName SMPL1 -collection COLL01
Configure ユーティリティーを pureQueryXML ファイルで実行してから、そのファイルにさらに SQL ステートメントをキャプチャーする場合には、Configure ユーティリティーをキャプチャー・ファイル上で再実行する必要があります。
java com.ibm.pdq.tools.StaticBinder –url jdbc:db2://svl01:500/DB2M -username user01 -password myPass -pureQueryXml Sample1Cptr.pdqxml
pdq.executionMode=STATIC pdq.pureQueryXml=Sample1Cptr.pdqxml
デフォルトでは、キャプチャーされていない SQL ステートメントをアプリケーションが動的に実行できます。