Iterator 以外のすべての Java タイプで照会結果を戻すと、照会が実行されるときに結果全体が消費され、戻されるオブジェクトにデータをキャプチャーするために使用されます。 ただし、戻される Iterator は、アプリケーションが next() 操作を実行するたびに、1 回に 1 行ずつ結果を消費します。
Iterator を使用して全体の照会結果を読み取る場合、pureQuery は、最後の行が読み取られると Iterator を閉じます。 Iterator を閉じると、Iterator の生成に必要だったデータベース・リソースは解放されます。
ただし、Iterator で照会結果全体が消費されない場合には、Iterator を明示的に閉じる必要があります。
例えば、customers という Iterator を閉じるには以下のコードを使用できます。これは、Iterator を ResultIterator にキャストしてから、ResultIterator.close() メソッドを呼び出します。
((ResultIterator) customers).close();
Iterator を戻す pureQuery メソッドは常に、pureQuery が com.ibm.pdq.runtime.ResultIterator として構成するタイプ java.util.Iterator を戻します。 ResultIterator は、Iterator の基礎となる ResultSet を明示的に閉じて、クライアントまたはサーバーで ResultSet と関連付けられたすべてのリソースを解放する手段を、アプリケーションに提供します。
ResultIterator インターフェースは以下のように定義されます。
package com.ibm.pdq.runtime; import java.util.Iterator; public interface ResultIterator<T> extends Iterator<T> { // release any resources associated with this Iterator public void close(); }