このセクションでは、Parasoft JDBC ドライバーについて説明します。Parasoft JDBC ドライバーは、データベース クエリーや、クエリーに対応する結果データを記録するために使用します。Parasoft JDBC ドライバーを構成し、テスト対象アプリケーションが Parasoft JDBC ドライバーと通信するよう設定すると、JDBC コントローラーを使ってモード (たとえばパススルー、記録、仮想化) の切り替えを GUI から行うことができます。このとき、アプリケーション サーバーの再起動は必要ありません。
セクションの内容:
Parasoft JDBC ドライバーとは
データベース仮想化 (「データベースの記録」を参照) は Parasoft JDBC ドライバーと JDBC コントローラーを併用して行われます。Parasoft JDBC ドライバーはアプリケーションと通常の JDBC ドライバーの仲介機能を持つ特別な JDBC ドライバーです。Parasoft JDBC ドライバーは JDBC API を実装しているので、標準的なデータベース ドライバーと同じように Java アプリケーション サーバーに構成できます。
Parasoft JDBC ドライバーを構成すると、以下のことが可能になります。
- JDBC 呼び出し (SQL クエリー) を本来のドライバーに渡します。さらにオプションとしてクエリーとそれに関連する ResultSet を記録するために Parasoft Virtualize サーバーに送ります。フェイルオーバー モードでは、ライブ データベースで失敗 (SQL 例外) が発生する場合、クエリーが自動的に Parasoft Virtualize サーバーにリルートされます。
- クエリーを Parasoft Virtualize サーバーに渡し、Parasoft Virtualize サーバーは (仮想アセットに SQL レスポンダーが構成されていれば) 本来のデータベース接続と同じようにクエリーに応答します。ハイブリッド モードでは、対応する「仮想」レスポンスが見つからなかった場合、自動的に本来のドライバーにクエリーが渡されます。
Parasoft JDBC ドライバーのリモート管理
Virtualize GUI (または Environment Manager GUI) から、JDBC コントローラーを使って単一の Parasoft JDBC ドライバーまたはドライバーのグループの設定を制御できます。たとえば、クラスター環境にデプロイされた JDBC ドライバーを 1 箇所で制御できます。あるいは、1 つのテスト対象アプリケーションで複数のドライバー (またはデータ ソース ) が使用されている場合、デプロイメント構成を一斉に変更できます (たとえばすべてのドライバーのモードを一度に切り替えられます)。
GUI コントロールを使用すると、テスト対象アプリケーションを再起動せずにモード (記録、パススルー、仮想化、ハイブリッド、フェイルオーバー) やその他の Parasoft JDBC ドライバー設定 (ログ記録など) を変更できます。テスト対象アプリケーションが実行されていないときに設定を変更すると、テスト対象アプリケーションが起動されたときに変更が適用されます。
サポートされている SQL クエリー
Parasoft Virtualize は SQL SELECT 文の記録と仮想化をサポートしています。Cursor/ResultSet パラメーターを含め、複数の入力、出力、および入出力パラメーターを持つストアド プロシージャがサポートされています。Oracle および DB2 の場合、複数の出力パラメーターがあり、それぞれがカーソルを返すストアド プロシージャの記録がサポートされています。
クエリーが実際の JDBC ドライバーに転送される場合 (つまり記録モードまたはパススルー モードの場合)、INSERT、UPDATE および DELETE 文は本来のデータベース/ドライバーに渡されます。
クエリーが仮想アセットに送られる場合、Statement.executeUpdate() の呼び出しはゼロを返します。Parasoft Virtualize は INSERT、UPDATE および DELETE の実際の振る舞いをエミュレートしません。結果として、Virtualize に記録されたデータはこれらの SQL クエリーによって変更されません。
データ記録の条件
CallableStatement がクローズされたとき、または出力パラメーターとして宣言されたすべてのパラメーターおよび結果セットが読み込まれたときに結果が記録されます。ResultSet を記録するには、ResultSet のクローズを呼び出す必要があります。Statement または PreparedStatement のクローズを呼び出すと、ResultSet からデータは記録されません。記録される列名は、取得に使用したインターフェイス メソッドに基づきます。ResultSet.getString(String columnLabel) を呼び出すと、記録されたデータに columnLabel が使用されます。列のインデックスが使用された場合、記録されたデータの列ラベルとしてインデックスが使用されます。
ResultSet.close() の明示的な呼び出しによって結果セットがクローズされていない場合、Parasoft JDBC ドライバーが記録を終了したときに結果が記録されます。記録が停止すると、Parasoft JDBC ドライバーは明示的にクローズされていない結果セットがあるかどうかを確認し、そのような結果セットを記録するために Virtualize に送ります。
ストアド プロシージャ
Virtualize および Parasoft JDBC ドライバーは、CallableStatement インターフェイスによってストアド プロシージャをサポートしています。Virtualize はストアド プロシージャの内部の実装を関知せずに戻り値および出力パラメーターをエミュレートします。ストアド プロシージャが UPDATE、INSERT または DELETE クエリーを実行する場合、Virtualize に記録されたデータはそれらのクエリーの影響を受けません。
出力パラメーターまたは関数の戻り値として単一の ResultSet を返す関数/プロシージャがサポートされています。
現時点では以下の関数/プロシージャはサポートされていません。
- 複数の出力パラメーターで ResultSet を返す関数/プロシージャ
- 戻り値として結果セットを返すほかに出力パラメーターとして ResultSet を返す関数/プロシージャ