WebSphere Application Server - Express, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

             目次と検索結果のパーソナライズ化

動的照会 API: prepareQuery() および executePlan() メソッド

これらのメソッドを使用して、動的照会に関連するオーバーヘッドをより効率的に割り振ります。 これらは JDBC API の prepareStatement() メソッドおよび executeQuery() メソッドの機能と同じです。

動的な Enterprise JavaBeans (EJB) 照会を実行するには、 アプリケーション・サーバーが、実行時に照会ストリングを構造化された照会言語 (SQL) に構文解析する必要があります。もちろん、動的照会の代わりに標準の EJB 照会を実行することによって、実行時のオーバーヘッドをなくすこともできます。 「デプロイメント照会」とも呼ばれる標準の照会は、 デプロイメント時に解析、ビルドされ、その後 finder または select メソッドによって実行されます。

もう 1 つの選択肢として、動的照会のオーバーヘッドを再配分するコードを作成し、 アプリケーションのパフォーマンス向上を目指す方法があります。 これを行うには、まず executeQuery() の代わりに prepareQuery() メソッドを呼び出します。 prepareQuery() メソッドは照会を解析、変換し、照会計画 と呼ばれるストリングを戻します。 この計画には、解析と変換によって生成された SQL 文およびその他の、動的照会 API で必要な情報が含まれています。 このストリングをアプリケーションに保管し、これを使って executePlan() メソッドを呼び出して照会を実行します。 (prepareQuery() メソッドを使用して SQL 変換の成果物の表示だけを行うこともできます。その場合は単にメソッドを呼び出して戻り値を表示します。)

照会のパラメーターを、prepareQuery() および executePlan() メソッド呼び出し上の Object タイプの配列として受け渡します。 適切なデータ・タイプを受け渡すようにしてください。 アプリケーション・サーバーは prepareQuery() メソッド呼び出しを処理する際に、照会を (実際の値ではなく) パラメーター・タイプに応じて検証します。

コード例

注: 以下のコード例では、最初の executePlan() メソッドの呼び出しは parms[0]?1 に置換します。 したがって、最初に実行される照会は続く照会ステートメントと機能的に同等です。
	select e.name as name, object(e) as emp from EmpBean e where e.salary < 50000
2 番目の呼び出しはこのステートメントと機能的に同等の照会を実行します。
	select e.name as name, object(e) as emp from EmpBean e where e.salary < 60000

以下に例を示します。

String query = 
"select e.name as name , object(e) as emp from EmpBean e where e.salary < ?1"; 
QueryIterator it = null;
Integer[] parms = new Integer[1];
parms[0] = new Integer(0);

prepareQuery() の呼び出しで、任意の整数値を受け渡します。 これを行うことによって以下のように、「?1」を以下のように整数型として定義します。

String queryPlan= qb.prepareQuery(query, parms, null );

   parms[0] = new Integer(50000);

次に、「?1」の実際の値である「Integer(50000)」で照会を実行します。

select e.name as name, object(e) as emp from EmpBean e where e.salary < 50000it = qb.executePlan( queryPlan, parms, 0, 99);
parms[0] = new Integer(60000);

さらに「?1」の別の値である「Integer(60000)」でもう一度照会を実行します。

it = qb.executePlan( queryPlan, parms, 0, 99);



関連タスク
../tasks/tque_dynamic.html
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 6:25:35 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/query/ref/rque_advancedmethods.html