Flyway Java : guide complet avec exemples pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à Flyway : qu'est-ce que c'est et pourquoi l'utiliser

Flyway est une bibliothèque de gestion de versions et de migrations de bases de données (Database Migration Tool). Dans le développement logiciel moderne, notamment en travail d'équipe et avec les méthodologies CI/CD, il est crucial de synchroniser la structure de la base de données entre les développeurs, les environnements de test et de production. Flyway résout ce problème en permettant de décrire les modifications du schéma de la base de données (création de tables, ajout de colonnes, d'index, de triggers, etc.) sous forme de scripts SQL versionnés ou de classes Java.

Le concept principal de Flyway est simple : chaque migration possède un numéro de version unique (par exemple V1, V2, V3) et est exécutée une seule fois. La bibliothèque suit les migrations déjà appliquées à une base de données spécifique à l'aide d'une table dédiée (par défaut flyway_schema_history). Cela garantit l'idempotence et la reproductibilité de l'état de la base de données.

Pourquoi utiliser Flyway ?

  • Versionnage du schéma : Chaque modification de la base de données est une version distincte, pouvant être annulée ou appliquée.
  • Automatisation : Intégration avec Maven, Gradle, Spring Boot et les pipelines CI/CD.
  • Contrôle d'intégrité : Flyway vérifie les sommes de contrôle des migrations, empêchant les modifications accidentelles de scripts déjà exécutés.
  • Simplicité : Pour la plupart des tâches, il suffit d'écrire un simple script SQL.

Installation de Flyway pour Java

Flyway ne s'installe pas via pip ou npm, car c'est une bibliothèque Java. Il existe plusieurs façons de l'ajouter à votre projet :

1. Maven (pom.xml)

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>9.22.3</version> <!-- Version actuelle au moment de la rédaction -->
</dependency>

<!-- Pilote pour votre base de données, par exemple PostgreSQL -->
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.7.1</version>
</dependency>

2. Gradle (build.gradle)

implementation 'org.flywaydb:flyway-core:9.22.3'
implementation 'org.postgresql:postgresql:42.7.1'

3. Plugin Maven (pour exécution en ligne de commande)

<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>9.22.3</version>
    <configuration>
        <url>jdbc:postgresql://localhost:5432/mydb</url>
        <user>myuser</user>
        <password>mypassword</password>
    </configuration>
</plugin>

4. Spring Boot (configuration automatique)

Si vous utilisez Spring Boot, il suffit d'ajouter la dépendance et de configurer les paramètres dans application.properties :

spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=myuser
spring.datasource.password=mypassword

Démarrage rapide avec un exemple de code

Examinons un exemple minimal d'utilisation de Flyway dans une application Java pour créer une table users.

Étape 1 : Créez la structure de répertoires pour les migrations

Par défaut, Flyway recherche les scripts SQL dans le dossier db/migration du classpath (par exemple src/main/resources/db/migration).

Étape 2 : Créez le fichier de migration

Créez un fichier nommé V1__Create_users_table.sql dans ce dossier :

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Recommendations