[JAVA] Comment définir une taille de récupération par défaut si jOOQ obtient une erreur OOM lors de la récupération d'un énorme jeu de résultats

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:...")

Idem pour Spring Boot

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.

Autres méthodes (pour PostgreSQL)

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

Comment définir une taille de récupération par défaut si jOOQ obtient une erreur OOM lors de la récupération d'un énorme jeu de résultats
Une erreur s'est produite lors de l'exécution d'une fonction avec CURSOR défini dans le paramètre OUT de MyBatis dans PostgreSQL.
Comment régler chrony lorsque le temps change dans CentOS7
[Java] L'ajout d'un élément à la collection provoque une erreur de compilation
Comment afficher la valeur lorsqu'il y a un tableau dans le tableau
[jOOQ] Comment utiliser CASE WHEN dans la clause WHERE / AND / OR
Comment résoudre l'erreur inconnue apparue lors de l'utilisation de slf4j en Java
Comment définir l'image pour dessiner à gauche / à droite du bouton à l'aide de la police d'icône (Iconics)
Comment afficher les messages d'erreur et les messages de réussite lors de l'inscription en tant qu'utilisateur
Je souhaite afficher un message d'erreur lors de l'inscription dans la base de données
Comment référencer une colonne lors du remplacement de la méthode de nom de colonne dans ActiveRecord
Lors de l'enregistrement d'un nouvel utilisateur, j'ai eu une erreur appelée ActiveRecord :: NotNullViolation et comment y faire face.
Que faire si le message "Un serveur est déjà en cours d'exécution" s'affiche. Erreur lors de la tentative de démarrage du serveur rails
[Note] [Débutant] Comment écrire lors de la modification de la valeur d'un élément de tableau dans une phrase répétée de Ruby
Lors de l'introduction de JOOQ dans Spring Boot, une histoire qui a été traitée parce qu'une erreur s'est produite autour de Liquidbase