SQL ステートメントのタイムアウトと pureQuery が照会結果に返す行の最大数を設定できます。
このタスクについて
これらのプロパティーの値を、pureQuery アプリケーションが実行するすべての SQL データ操作言語 (DML) ステートメントに対して、グローバルに設定できます。または、これらのプロパティーの値を、Data インターフェースのインプリメンテーションのインスタンスと一緒にアプリケーションが使用するすべての SQL DML ステートメントに対して、ローカルに設定できます。
ローカルで個々のステートメントにこれらを設定することはできません。
pureQuery はこれらのプロパティーの値を対応する JDBC ステートメント・メソッドに渡します。
- queryTimeoutInSeconds
- SQL DML ステートメントが実行するまでの待機秒数
指定した時間内にステートメントが完了しない場合、pureQuery では SQLException が原因となった実行時例外をスローします。値が 0 の場合、ステートメントを無期限に実行できます。
- maxResultsRow
- ステートメントが照会結果に戻す行の最大数
行カウントがこの制限に達した行は、破棄されます。
値が 0 の場合、照会結果にはいくつでも無限に行を入れることができます。
照会結果を返すアプリケーション内のすべてのステートメントではなく、個々のステートメントにこの行の最大数を構成する場合は、2 つの方法があります。
- ステートメント中で FETCH FIRST n ROWS 節を使用するか、ターゲット・データベースがサポートする同等の構文を使用します。
- 制限された行数を処理する ResultHandler を使用します。例えば、IteratorPagingResultHandler を使用できます。
手順
これらのプロパティーに値を設定するには、これら 2 つのステップのいずれかに従ってください。pureQuery は 2 つのメソッドが現れる順序で値を検索します。
- Properties オブジェクトにローカルで値を設定します。次に、Properties オブジェクトを受け入れる DataFactory.getData() メソッドに、この Properties オブジェクトを渡します。
ローカル設定がグローバル設定よりも優先します。
例えば、新しい Properties オブジェクトを作成し、値を設定し、以下のようにそのオブジェクト getData() メソッドに渡すことができます。
java.util.Properties myPdqProperties = new java.util.Properties();
myPdqProperties.setProperty("pdq.queryTimeoutInSeconds", "5");
myPdqProperties.setProperty(“pdq.maxResultRows”, "100");
Connection connection = ...
Data data = DataFactory.getData (com.MyInterface.class, connection, myPdqProperties);
- pdq.properties ファイルにプロパティーをグローバルに設定できます。このファイルは、ファイル・システムまたはアプリケーションのクラスパスに置くことができます。
ローカル設定がグローバル設定よりも優先します。
例えば、pdq.properties ファイルに以下の項目を追加できます。
pdq.queryTimeoutInSeconds = 5
pdq.maxResultRows = 100
デフォルトでは、pureQuery でファイル名として pdq.properties が使用され、このファイルがアプリケーションのクラスパスに配置される必要があります。
別のファイル名を使用したり、別の場所にファイルを置く場合、またはその両方を行う場合は、以下のように、アプリケーションの実行時に
configFile JVM システム・プロパティーでファイルをポイントします。
-Dpdq.configFile=path-and-file-name または resource-name Java-package.application
Web アプリケーションを開発している場合には、
アプリケーションの WEB-INF/classes フォルダー、または WEB-INF/lib フォルダー内の JAR ファイルに、
pdq.properties ファイルを配置します。
スタンドアロン・アプリケーションを開発している場合には、
アプリケーションのクラスパス内の任意のフォルダーまたは JAR ファイルに pdq.properties ファイルを配置します。