Wenn jOOQ versucht, eine große Ergebnismenge in einem Stream abzurufen, Sie jedoch "OutOfMemoryError" erhalten, ist die Abrufgröße wahrscheinlich unendlich (im Fall des PostgreSQL-Treibers). Lassen Sie uns die XML-Datei von jOOQ als Standardeinstellungswert für die Abrufgröße von jOOQ direkt unter dem Stammverzeichnis des Klassenpfads verwenden.
(Ausführliche Informationen zur Verarbeitung finden Sie unter org.jooq.conf.SettingsTools
.)
src/main/resources/jooq-settings.xml
<?xml version="1.0" ?>
<settings
xmlns="http://www.jooq.org/xsd/jooq-runtime-3.11.2.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--Bitte geben Sie eine geeignete Größe an.-->
<fetchSize>1000</fetchSize>
</settings>
Darüber hinaus ist die folgende Abhängigkeit separat erforderlich, um das obige XML gemäß den obigen Einstellungen in JavaBeans zu entfernen. Fügen wir es hinzu.
build.gradle
//Je nach Fall kann die Versionsspezifikation unterschiedlich sein. Suchen Sie daher nach einem geeigneten Wert.
runtime('javax.activation:activation:1.1.1')
runtime("com.sun.xml.bind:jaxb-impl:...")
runtime("com.sun.xml.bind:jaxb-core:...")
Selbst wenn Sie in SpringBoot spring-boot-Starter-jooq
verwenden, scheint es keine Möglichkeit zu geben, die gleichen Einstellungen wie oben in application.properties
usw. zu implementieren. Lassen Sie uns also aufgeben und die XML-Datei ablegen.
Ich ließ mich von einem Kollegen unterrichten.
Es scheint, dass Sie die folgende Zeichenfolge zu [JDBC-URL von PostgreSQL] hinzufügen sollten (https://jdbc.postgresql.org/documentation/head/connect.html).
&defaultRowFetchSize=1000
Recommended Posts