Vous pouvez utiliser les méthodes annotées ou intégrées pour lancer une requête sur les collections Java intégrées à la mémoire comme des tableaux,
des classes implémentant java.lang.Iterable et des classes implémentant
java.util.Iterator.
Avec les requêtes sur les collections, vous pouvez utiliser SQL pour filtrer un groupe
d'objets renvoyés par une requête sur un objet de base de données. Les
objets sont matérialisés par une requête précédente lancée sur une source de données associée. Vous pouvez utiliser n'importe quelle instruction SELECT conforme à la norme SQL
92.
Par exemple, vous exécutez une requête sur la table de base de données CUSTOMER,
en renseignant un objet List avec un seul objet Customer par enregistrement dans la table. Ensuite, vous lancez une requête sur l'objet List.
La seconde requête est une requête sur une collection. Pour cette seconde requête et toutes les requêtes suivantes de l'objet List,
vous n'avez plus besoin de la connexion à la base de données car le contenu de l'objet
List reste en mémoire.
Avertissement : Lorsque vous utilisez les objets Iterator, n'oubliez pas les points suivants :
- Une fois que vous avez matérialisé les résultats de la requête dans l'objet Iterator, vous devez conserver la connexion à la base de données ouverte tant que vous n'avez pas fini d'utiliser l'objet
Iterator.
- L'opération consistant à contrôler le contenu d'un objet implémentant
java.util.Iterator permet à ce contenu d'être utilisé et il n'existe aucun moyen de reprendre au début du contenu.
- A moins qu'un objet Iterator soit initialement vide,
il n'existe aucun moyen de savoir combien d'objets se trouvent dedans tant que la requête n'est pas terminée.