Ce tutoriel montre comment utiliser Flyway pour gérer les migrations de schéma de base de données dans une application Spring Boot.
Flyway est un outil de migration de base de données qui favorise la simplicité et la convention plutôt que la configuration. Il utilise des scripts SQL pour versionner l'état de votre base de données.
- Migrations SQL : Les changements de schéma sont écrits dans des fichiers SQL nommés selon une convention précise (ex:
V1__Create_person_table.sql). Flyway les exécute dans l'ordre. - Table de métadonnées (
flyway_schema_history) : Flyway crée et gère une table dans votre base de données pour suivre quelles migrations ont déjà été appliquées, quand, et si elles ont réussi. - Intégration Spring Boot : L'intégration est automatique. Il suffit d'ajouter la dépendance
flyway-coreet de placer les scripts de migration danssrc/main/resources/db/migration. Spring Boot exécute les migrations Flyway au démarrage de l'application.
-
Lancez l'application en exécutant la méthode
maindeFlywayApplication.javaou via Maven à la racine de ce module :mvn spring-boot:run
-
Observez les logs de démarrage. Vous verrez que Flyway détecte et applique les migrations SQL trouvées dans le classpath :
... o.f.c.internal.command.DbMigrate : Migrating schema "PUBLIC" to version "1 - create book table" ... o.f.c.internal.command.DbMigrate : Migrating schema "PUBLIC" to version "2 - table-user" ... o.f.c.internal.command.DbMigrate : Migrating schema "PUBLIC" to version "3 - ajout colonne email" ... o.f.c.internal.command.DbMigrate : Successfully applied 3 migrations to schema "PUBLIC" (execution time 00:00.0XXs) -
Vérifiez la base de données via la console H2, qui est activée pour ce projet.
- Accédez à la console dans votre navigateur : http://localhost:8087/h2-console
- Assurez-vous que le champ JDBC URL est bien
jdbc:h2:file:~/data/flyway(le même que dansapplication.properties). - Connectez-vous.
-
Une fois connecté, vous pouvez constater que les tables
BOOKSetUSERSont été créées et modifiées conformément aux scripts de migration, et que la tableFLYWAY_SCHEMA_HISTORYcontient la trace de ces opérations.