Si jOOQ essaie de récupérer un énorme jeu de résultats dans un flux, mais que vous obtenez ʻOutOfMemoryError`, la taille de récupération est probablement infinie (dans le cas du pilote PostgreSQL). Faisons en sorte que le fichier XML de jOOQ soit utilisé comme valeur de réglage par défaut de la taille de récupération de jOOQ directement sous la racine du chemin de classe.
(Reportez-vous à «org.jooq.conf.SettingsTools» pour un traitement détaillé)
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">
<!--Veuillez spécifier une taille appropriée.-->
<fetchSize>1000</fetchSize>
</settings>
De plus, afin de désassembler le XML ci-dessus en JavaBeans selon les paramètres ci-dessus, la dépendance suivante est requise séparément. Ajoutons-le.
build.gradle
//Selon le cas, la spécification de version peut différer, recherchez donc une valeur appropriée.
runtime('javax.activation:activation:1.1.1')
runtime("com.sun.xml.bind:jaxb-impl:...")
runtime("com.sun.xml.bind:jaxb-core:...")
Même si vous utilisez spring-boot-starter-jooq
dans SpringBoot, il semble qu'il n'y ait aucun moyen d'implémenter les mêmes paramètres que ci-dessus dans ʻapplication.properties` etc., alors abandonnons et mettons le fichier XML.
J'ai demandé à un collègue de m'apprendre.
Il semble que vous devriez ajouter la chaîne de caractères suivante à URL JDBC de PostgreSQL.
&defaultRowFetchSize=1000
Recommended Posts