照会結果の一部分のみを使用した後で Iterator オブジェクトを明示的に閉じる

Iterator に含まれる照会結果のすべての行を使用しない場合は、Iterator の使用を終了したら、その Iterator を明示的に閉じる必要があります。

Iterator 以外のすべての Java タイプで照会結果を戻すと、照会が実行されるときに結果全体が消費され、戻されるオブジェクトにデータをキャプチャーするために使用されます。 ただし、戻される Iterator は、アプリケーションが next() 操作を実行するたびに、1 回に 1 行ずつ結果を消費します。

Iterator を使用して全体の照会結果を読み取る場合、pureQuery は、最後の行が読み取られると Iterator を閉じます。 Iterator を閉じると、Iterator の生成に必要だったデータベース・リソースは解放されます。

ただし、Iterator で照会結果全体が消費されない場合には、Iterator を明示的に閉じる必要があります。

例えば、customers という Iterator を閉じるには以下のコードを使用できます。これは、IteratorResultIterator にキャストしてから、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();
}

フィードバック