Ce projet propose une étude détaillée et des exemples pratiques sur le traitement par lots (batch processing) en utilisant Spring Batch. L'objectif est d'illustrer les concepts fondamentaux ainsi que des techniques avancées pour la gestion des données par lots.
Un travail batch (Batch Job) est composé de plusieurs étapes (steps). Chaque step est responsable d'une partie du traitement et peut inclure la lecture des données, leur transformation et leur écriture.
Une étape (Step) est une phase du travail batch. Elle comprend généralement un lecteur (reader), un processeur (processor) et un écrivain (writer).
Le traitement par morceaux (Chunk) permet de diviser les données en petits morceaux pour les traiter. Cela améliore les performances et la gestion des transactions.
Ce projet utilise un exemple concret pour illustrer le fonctionnement de Spring Batch. Les étapes du projet sont les suivantes :
Chaque étape est détaillée dans un fichier Markdown séparé, qui inclut l'objectif, le code et les explications nécessaires.
- Java 17
- Maven
- Docker
-
Cloner le dépôt :
git clone https://github.com/MarioHit/batch-processing cd batch-processing
-
Configurer votre base de données dans le fichier
application.yml
:spring: datasource: url: jdbc:postgresql://localhost:5432/docker username: docker password: docker driver-class-name: org.postgresql.Driver jpa: hibernate: ddl-auto: create-drop show-sql: false properties: hibernate: format_sql: true database: postgresql database-platform: org.hibernate.dialect.PostgreSQLDialect batch: jdbc: initialize-schema: ALWAYS job: enabled: false server: port: 9090 batch: input: file: src/main/resources/students.csv
-
Lancer l'application Spring Boot :
mvn spring-boot:run
-
Envoyer une requête HTTP POST pour démarrer le traitement par lots :
curl -X POST http://localhost:9090/students
- Spring Boot : Framework pour créer des applications Java autonomes et de production.
- Spring Batch : Framework pour faciliter le traitement par lots.
- PostgreSQL : Base de données relationnelle utilisée pour stocker les données.
BatchConfig.java
: Configuration des jobs et des steps.Student.java
: Entité représentant un étudiant.StudentRepository.java
: Repository pour gérer les opérations CRUD sur les étudiants.StudentProcessor.java
: Classe pour transformer les données des étudiants.students.csv
: Fichier CSV d'exemple pour l'importation des données.