Verhalten von ViewObjects RowSets

Am ADF-ViewObject wird das SQL-Statemen zur Ermittlung der Daten gespeichert.  Die selektierten Daten werden schrittweise (PageByPage Iterator) an den Client (MiddleTier) übertragen. Einfluss kann über das Property RangeSize genommen werden. -1 bedeutet, dass alle Datensätze an den Client sofort übertragen werden (Default-Verhalten).

Zusätzlich kann mit den Properties das Verhalten der lezten Seite beeinflusst werden:

  • Mit RowIterator.ITER_MODE_LAST_PAGE_FULL werden an die letzte Seite immer die restlichen Sätze angehängt. Somit ist die letzte Seite immer  >= RanageSize und < (RanageSize + RanageSize) 
  • Beim setzen des Attributs RowIterator.ITER_MODE_LAST_PAGE_PARTIAL enthält die letzte Seite immer nur den Rest, auch wenn es weniger Sätze sind als die bei RanageSize angeben wurden. Die letzte Seite ist somit immer <= RanageSize

Damit der Iterator und Endanwender weiss wieviel Datensätze das Statement beinhaltet, wird vor jeder Selektion ein SQL-Count mit dem identischen Statement gegen die DB abgesetzt. Das Übermitteln der Daten wird dann in den angegebenen Blöcken  (RanageSize) durchgeführt. Das Verhalten kann am ViewObject durch Überschreiben der Methode getQueryHitCount() beeinflusst werden.

Sollte eine selektierte Ergebnismenge nur einmal angezeigt werden (vorwärts blättern), dann empfiehlt es sich aus Performanz- und Ressourcen-Gründen das Attribut forwardOnly im VO auf true zu setzen. Damit wird dem Framework signalisiert, dass die Datensätze nur einmal abgeholt werden und anschließend verworfen werden können. 

Das Attribut RANGE_PAGING  ist in diesem Zusamenhang noch interessant. Um Speichplatz zu sparen kann das Attribut bei großen Datenmengen gesetzt werden. Das Attribut steuert dann, dass nur die aktuelle Seite (RangeSize) im Speicher gehalten wird. Dies hat jedoch den Nebeneffekt, dass bei jedem Blättern eine Query ausgeführt wird und die selektierten Datensätze erneut von der DB übertragen inkl. geänderte Daten sichtbar werden.

Siehe auch:  RangePaging

Advertisements

~ von bmaier - 13. Januar 2008.

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

 
%d Bloggern gefällt das: