Le renvoi d'un résultat de requête comme tout type Java autre que Iterator provoque l'utilisation de l'ensemble du résultat pour remplir l'objet renvoyé. Toutefois, un objet Iterator renvoyé utilise le résultat une ligne à la fois à mesure que votre application effectue chaque opération next()
Si vous utilisez un objet Iterator pour lire l'ensemble du résultat d'une requête, pureQuery ferme Iterator après avoir lu la dernière ligne. La fermeture d'un Iterator libère des ressources de base de données qui ont été nécessaires à la génération de l'objet Iterator.
Toutefois, si l'ensemble du résultat de la requête présent dans un Iterator n'est pas utilisé, vous devez fermer explicitement l'Iterator.
Par exemple, pour fermer un objet Iterator nommé customers, vous utiliseriez le code suivant, qui utilise l'Iterator pour un ResultIterator, puis appelle la méthode ResultIterator.close() :
((ResultIterator) customers).close();
Les méthodes pureQuery qui renvoient un Iterator renvoient toujours le type java.util.Iterator, que pureQuery construit comme com.ibm.pdq.runtime.ResultIterator. ResultIterator fournit des applications ainsi que les moyens de fermer explicitement le ResultSet sous-jacent d'un Iterator et de libérer les éventuelles ressources associées au ResultSet dans le client ou sur le serveur.
L'interface ResultIterator est définie comme suit :
package com.ibm.pdq.runtime;
import java.util.Iterator;
public interface ResultIterator<T> extends Iterator<T>
{
// libère toute ressources associée à cet Iterator
public void close();
}