このセクションでは、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 を返す関数/プロシージャ
  • No labels