Tach!
Die MySQL(i)-API legt jedoch im Hintergrund die gesamte Ergebnisdatenmenge aus der SQL-Abfrage im Speicher ab, so dass du den Fetch-Zeiger problemlos wieder auf den Anfang stellen kannst, wenn ein erneuter Fetchvorgang stattfinden soll. Iterator ist für den einmaligen Gebrauch vorgesehen, mit IteratorAggregate kann man mehrfach durchlaufbare Iteratoren erstellen.
Dem letzten Satz widerspreche ich, denn es gibt keinen Unterschied in der Anzahl möglicher Durchläufe zwischen den Interfaces "Iterator" und "IteratorAggregate".
Ok, ist schon lange her, als ich das letzte Mal damit in Berührung kam. Das Interface Iterator hat eine Methode rewind(), mit der man zurückstellen kann. Dann war der Unterschied zwischen beiden Interfaces der, dass man mit Iterator keinen zweiten Durchlauf zur gleichen Zeit starten kann, weil seine Methoden direkt im Datenobjekt integriert sind und keinen Hinweis zum Aufrufer bekommen, um zwischen mehreren zu unterscheiden. IteratorAggregate hingegen liefert für jeden Verwender einen eigenständigen Iterator, der sich separat merken kann, wie weit er ist.
dedlfix.