ADF-BC: ViewObject, Row, RowSet, RowSetIterator …
Das ADF-ViewObject hat in ADF-BC die Aufgabe SQL-Statements und Paramter zur Abfrage zu verwaten. Daten werden intern durch folgende Klassen verwaltet:
-
Row – Repräsentiert einen Tupel
-
RowSet – Repräsentiert eine SQL-Ergebnismenge mit Row Objekten
Der Zugriff auf die Ergebnismenge erfolgt in der Regel über den
RowSetIteratorBei einer Abfrage (vo.executeQuery() ) erstellt das ViewObjekt intern ein RowSet und ein RowSetIterator. Vereinfacht dargestellt würde jeder Zugriff wie folgt aussehen:
vos.getRowSet().createRowSetIterator("sss").next();Wer mit ADF-BC schon gearbeitet hat fragt sich nun warum können dann mit einer ViewObject Instanz die Operationen vo.next, vo. last, vo.first, usw. direkt aufgerufen werden?
Ganz einfach: die Klasse ViewObject implementiert zusätzlich das Interface RowSetIterator und stellt damit diese Mehtoden bereit. Intern erzeut das VO bei einer Abfrage einen RowSet und legt ihn intern in einr Liste mit dem Namen „_default“ ab. Greift man nun z.B. mit der Mehthode
vo.first() auf das VO zu, dann wird geprüft, ob ein Default-Rowset schon vorhanden ist und delegiert den Methodenaufruf einfach an den RowSet bzw. RowSetIterator weiter. Sollte kein RowSet vorhanden sein, dann wird zuvor automatisch die ExecuteQuery-Mehtode aufgerufen und ein RowSet angelegt.Möchte man mehrere Iteratoren oder
RowSets verwalten, dann sind diese benannt durch die Mehtode vo.createRowSet(Name) bzw. rowSet.createRowSetIterator(Name) anzulegen und per vo.findRowSet(name) wieder vom ViewObject abzuholen.Siehe auch API Doc:

Eine Antwort schreiben
Sie müssen angemeldet sein, um kommentieren zu können.