JPA - Zeilen in einem festen Intervall laden.

Hallo,
meine Datenbank besteht aus sehr vielen Tabellen. Einige Daten möchte ich nicht direkt laden, da es sehr viele sind. Gibt es die Möglichkeit, in einem festen Intervallen die Zeilen einer Abfrage zu laden? Z.B. die ersten 20, danach die nächsten 20 usw ... .

Vielen Dank im Voraus.
 
N

nillehammer

Gast
Ja, es gibt mehrere Möglichkeiten. Die meistens genutzte basiert auf Paged ResultSets. Die kannst Du bei der Erstellung von Queries mittels der Methoden Query.setFirstResult und Query.setMaxResults nutzen. Allerdings habe ich mit HSQL mal den Exceution Plan laufen lassen. Das hat dort einem Full Table Scan verursacht. Ich habe darum meine Queries händisch so gebaut, dass ich das ohne hinbekommen habe. Folgendes Vorgehen dazu:
- Das Feld, nach dem sortiert werden soll, um die Intervalle zu bilden, muss indiziert sein
- Im Query-String für dieses Feld ein ORDER BY ASC
- Merke Dir auf Java-Seite den höchsten Wert der letzten Abfrage
- Und eine WHERE > höchster_Wert_der_letzten_Abfrage Klausel rein
 
N

nillehammer

Gast
Danke.
Mit JPA lässt es sich nicht realisieren?
Äh, das ist doch beides JPA?!? Die erste Variante nutzt die Query-Api, die zweite Variante baust Du in Deine JPQL-/HQL- oder SQL-Strings ein, je nachdem, was Du benutzt.
 

Ähnliche Java Themen


Oben