Sie können ein Zeitlimit für SQL-Anweisungen und eine maximale Anzahl Zeilen festlegen, die pureQuery in Abfrageergebnisse zurückgeben soll.
Informationen zu diesem Vorgang
Sie können Werte für diese Eigenschaften global für alle
SQL-Anweisungen in Datenbearbeitungssprache (DML) festlegen, die Ihre pureQuery-Anwendung ausführt, oder lokal für alle SQL-DML-Anweisungen festlegen, die die Anwendung mit einer Instanz einer Implementierung der Schnittstelle Data verwendet.
Sie können sie nicht lokal für einzelne Anweisungen festlegen.
pureQuery übergibt die Werte für diese Eigenschaften an entsprechende JDBC-Anweisungsmethoden.
- queryTimeoutInSeconds
- Die Anzahl Sekunden, die gewartet wird, bis die SQL-DML-Anweisung ausgeführt wird.
Wenn die Anweisung nicht innerhalb der angegebenen Zeitspanne abgeschlossen wird, löst pureQuery eine Laufzeitausnahmebedingung aus. Sie wird durch eine SQLException verursacht. Durch den Wert 0 können Anweisungen unbegrenzt ausgeführt werden.
- maxResultsRow
- Die maximale Anzahl Zeilen, die eine Anweisung in Abfrageergebnisse zurückgibt.
Die Zeilen werden gelöscht, nachdem die Anzahl der Zeilen diesen Grenzwert erreicht hat.
Durch den Wert 0 können Abfrageergebnisse eine unendliche Anzahl Zeilen enthalten.
Wenn Sie diese maximale Anzahl Zeilen für einzelne Anweisungen anstatt für alle Anweisungen in Ihrer Anwendung konfigurieren wollen, die Abfrageergebnisse zurückgeben, haben Sie zwei Auswahlmöglichkeiten:
- Verwenden Sie die Klausel FETCH FIRST n ROWS in Ihren Anweisungen oder eine äquivalente Syntax, die Ihre Zieldatenbank unterstützt.
- Verwenden Sie eine ResultHandler-Instanz, die eine begrenzte Anzahl Zeilen verarbeitet. Sie können z. B. IteratorPagingResultHandler verwenden.
Vorgehensweise
Führen Sie einen der beiden folgenden Schritte aus, um Werte für diese Eigenschaften festzulegen. pureQuery sucht in der Reihenfolge, in der die beiden Methoden angezeigt werden, nach Werten.
- Legen Sie die Werte lokal in einem Eigenschaftenobjekt fest. Übergeben Sie das Eigenschaftenobjekt dann an eine Methode DataFactory.getData(), die ein Eigenschaftenobjekt akzeptiert.
Lokale Einstellung haben Vorrang vor globalen Einstellungen.
Sie könnten z. B. wie folgt ein neues Eigenschaftenobjekt erstellen, die Werte festlegen und das Objekt an die Methode getData() übergeben:
java.util.Properties myPdqProperties = new java.util.Properties();
myPdqProperties.setProperty("pdq.queryTimeoutInSeconds", "5");
myPdqProperties.setProperty(“pdq.maxResultRows”, "100");
Connection connection = ...
Data data = DataFactory.getData (com.MyInterface.class, connection, myPdqProperties);
- Legen Sie die Eigenschaften global in einer Datei pdq.properties fest. Sie können diese Datei in das Dateisystem oder in den Klassenpfad Ihrer Anwendung stellen.
Lokale Einstellung haben Vorrang vor globalen Einstellungen.
Sie könnten z. B. einer Datei pdq.properties die folgenden Einträge hinzufügen:
pdq.queryTimeoutInSeconds = 5
pdq.maxResultRows = 100
Standardmäßig erwartet pureQuery, dass der Name der Datei pdq.properties lautet und die Speicherposition der Datei im Klassenpfad Ihrer Anwendung liegt.
Wenn Sie einen anderen Dateinamen verwenden und/oder die Datei an eine andere Speicherposition setzen wollen, verwenden Sie die JVM-Systemeigenschaft
configFile wie folgt, um beim Ausführen der Anwendung auf die Datei zu verweisen:
-Dpdq.configFile=Pfad_und_Dateinameoder Ressourcenname Java-Paket.Anwendung
Wenn Sie eine Webanwendung entwickeln, müssen Sie die Datei pdq.properties im Ordner WEB-INF/classes Ihrer Anwendung oder in einer JAR-Datei im Ordner WEB-INF/lib platzieren.
Wenn Sie eine eigenständige Anwendung entwickeln, müssen Sie die Datei pdq.properties in einem beliebigen Ordner oder einer beliebigen JAR-Datei platzieren, der bzw. die sich im Klassenpfad für die Anwendung befindet.