쿼리 결과를 Iterator가 아닌 Java™ 유형으로 리턴하면 리턴된 오브젝트를 채우기 위해 쿼리가 실행되고 사용될 때 전체 결과가 이용됩니다. 그러나 리턴된 Iterator는 애플리케이션에서 각 next() 조작을 수행할 때 한 번에 한 행씩 결과를 이용합니다.
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(); }