klee-contrib / topmodel

Outil de modélisation et générateurs pour divers langages
https://klee-contrib.github.io/topmodel/#/
MIT License
9 stars 9 forks source link

[JPA] Spring-batch dataFlows, mode JDBC et séparation des values/enums #281, #290, #291 #283

Closed gideruette closed 1 year ago

gideruette commented 1 year ago

Spring-batch dataFlows, mode JDBC et séparation des values/enums

Implémentation du générateur de dataflows spring-batch.

Fichiers générés

Flow

Le générateur créé un fichier par dataFlow, comprenant

La génération s'appuie sur spring-batch, mais aussi la librairie spring-batch-bulk, qui permet des performances exceptionnelles grâce à l'utilisation du bulk insert postgres (avec la commande COPY)

Reader

Le reader privilégié est le reader JdbcCursorItemReaderBuilder. Il permet d'obtenir les meilleures performances, et offre une meilleure flexibilité (choix de la source de données, requête).

Replace

Le truncate se fait avec la classe TaskletQuery de la librairie spring-batch-bulk. Nous aurions pu utiliser un deleteAll mais il est nettement moins performant que le truncate ;)

Processor

Si la classe source et la classe cible sont différentes, un processor est ajouté pour appeler le mapper de l'une vers l'autre

Writer

Les writers utilisent le PgBulkWriter de la librairie spring-batch-bulk. Il existe deux modes

Insert

Le writer copy directement les données dans la table cible. TopModel génère le mapping permettant de faire cette insertion.

Upsert

Le writer copy les données dans une table temporaire, puis recopie les données de table à table. En cas de conflit sur la clé primaire, un update est effectué. TopModel génère le mapping permettant de faire cette insertion.

Job

Le générateur créé un fichier de configuration de job par module. Ce job ordonnance les lancement des flow selon ce qui a été paramétré dans avec les mots clés dependsOn. Il import les configurations nécessaires à son bon fonctionnement.

Limitations et mises en garde

Breaking Changes :

Fix: #281 #290 #291