
đ Spring Boot â Passe Ă la vitesse supĂ©rieure : GĂšre tes migrations SQL comme un pro avec Flyway
đȘ§ Introduction
Qui nâa jamais utilisĂ© spring.jpa.hibernate.ddl-auto=update
pour faire évoluer le schéma de sa base de données dans un projet Spring Boot ?
Câest simple, rapide, mais⊠peut ĂȘtre dangereux.
Beaucoup de dĂ©veloppeurs Java/Spring ne savent pas quâil existe des outils pros comme Flyway pour gĂ©rer les Ă©volutions de la base de donnĂ©es. Ces outils permettent de versionner chaque modification et dâassurer la stabilitĂ© du projet, mĂȘme en Ă©quipe.
Dans cet article, je tâexplique pourquoi il faut sortir de la « magie » Hibernate, comment fonctionne Flyway, et comment lâadopter simplement dans tes projets.
Cet article va tâexpliquer :
- Les limites et les risques de
ddl-auto
- Les différentes valeurs de la propriété Spring Boot
- Les avantages de Flyway, comparé à la génération automatique
- Un exemple concret dâintĂ©gration et de migration
- Les bonnes pratiques à adopter (et les piÚges à éviter)
1. â ïž ddl-auto=update
: la fausse bonne idée
Dans la majorité des tutos, on voit souvent ceci :

Mais sais-tu vraiment ce que cela fait ?
Petit tour dâhorizon des valeurs possibles :
Valeur | Effet | Exemple d’utilisation |
---|---|---|
none | Aucune action. Ne touche pas Ă la base. | En production |
create | Crée tout le schéma à chaque démarrage (écrase tout). | Pour les tests jetables, jamais en prod |
create-drop | CrĂ©e au dĂ©marrage, supprime Ă lâarrĂȘt | Tests locaux |
update | Synchronise les entitĂ©s et le schĂ©ma (en thĂ©orieâŠ) | DĂ©veloppement rapide, mais peut facilement prĂ©senter un DANGER |
validate | Vérifie la conformité, ne modifie rien | Pour contrÎler sans toucher à la base |
Pourquoi âupdateâ pose problĂšme ?
- Ajout de nouveaux champs, mais gÚre mal les suppressions, renommages, types modifiés
- Impossible de prévoir ce qui va vraiment se passer (surtout sur une base déjà peuplée et si on travaille en équipe)
- Aucun historique ni possibilité de rollback
- Collaboration compliquée : si deux devs font évoluer le schéma, gare aux surprises !
- En prod, tu risques de perdre des données ou de casser ton application sans retour arriÚre
â ïž ddl-auto=update est pratique pour un prototype ou un POC, mais Ă bannir dĂšs que le projet devient sĂ©rieux !
2. đŠPourquoi Flyway ? Le contrĂŽle, tout simplement
Flyway, câest un outil de migration de base de donnĂ©es simple et puissant qui tâaide Ă :
- Versionner chaque modification du schéma (fini les « je ne sais plus ce qui a été modifié »)
- Ăcrire des scripts SQL explicites, versionnĂ©s, stockĂ©s dans ton repo Git
- Appliquer les modifications dans lâordre et traçable
- Revenir en arriÚre si besoin (dans la limite des scripts écrits)
- Travailler en équipe sans se marcher sur les pieds
Le principe ?
Chaque migration est un fichier SQL versionné (V1__init.sql
, V2__add_user_table.sql
, etc.).
Flyway garde en base un historique de ce qui a déjà été appliqué. à chaque démarrage, il applique seulement les nouveaux scripts.
3. đšâđ» IntĂ©grer Flyway dans un projet Spring Boot
Ătape 1 â Ajouter la dĂ©pendance Flyway
Avec Maven :

Ătape 2 â Le dossier de migration
Par dĂ©faut, les scripts de migration doivent ĂȘtre placĂ©s dans le dossier src/main/resources/db/migration
.
Ce répertoire est utilisé automatiquement par Flyway, mais tu peux le modifier à ta convenance via la propriété spring.flyway.locations
dans ton application.properties
.
Ătape 3 â Ăcrire les scripts SQL
- Les scripts sont nommés ainsi :
V1__init.sql
,V2__add_column.sql
, etc. - Ils sont exĂ©cutĂ©s dans lâordre des versions (
V1
,V2
, etc. indique lâordre dâexĂ©cution)
Exemple


Ătape 4 â Configurer Flyway (optionnel, Spring le fait pour toi)
Tu peux, si besoin, ajuster le comportement de Flyway dans le fichier application.properties
.
Par défaut, la configuration fonctionne sans rien changer, mais sache que presque tout est personnalisable selon tes besoins : chemin des migrations, nom du schéma, activation/désactivation, etc.

Au démarrage, Flyway vérifie la base, voit quelles migrations manquent, et les applique.
4. đĄïž Bonnes pratiques et conseils
- Toujours désactiver
ddl-auto
en production (none
ouvalidate
) - Versionne tes scripts SQL
- Ne mélange pas la génération automatique et Flyway : une seule source de vérité
- Teste chaque migration sur une base locale AVANT de déployer en prod
- Nomme tes fichiers de maniÚre explicite : facile à relire, à comprendre et à auditer (cela facilite aussi le travail en équipe)
5. ⥠Avantages concrets de Flyway
â LisibilitĂ© : chaque migration est claire, traçable, et explicite
â Collaboration : chacun ajoute ses migrations, aucun risque de conflit cachĂ©
â FacilitĂ© de rollback (au moins sur les migrations simples, en réécrivant le script inverse)
â Aucune magie : câest toi qui pilote !
â AdaptĂ© Ă toutes les bases SQL : PostgreSQL, MySQL, MariaDB, etc.
6. âïžLimites Ă connaĂźtre
âïž Pas de rollback automatique : Flyway ne revient pas en arriĂšre tout seul. Si tu veux annuler une migration, tu dois Ă©crire le script inverse manuellement.
âïž Scripts Ă maintenir : plus il y a de migrations, plus il faut organiser et documenter ses fichiers pour garder la cohĂ©rence.
âïž Migration destructive Ă manier avec prĂ©caution : les suppressions ou modifications de colonnes doivent ĂȘtre bien rĂ©flĂ©chies pour ne pas perdre de donnĂ©es.
âïž Pas adaptĂ© au NoSQL : Flyway gĂšre uniquement les bases SQL.
âïž Prise en main nĂ©cessaire : demande un petit effort de discipline par rapport Ă ddl-auto
, surtout au début, le temps de prendre le pli.
Au final :
MĂȘme si Flyway impose un peu plus de rigueur et dâorganisation quâun simpleddl-auto=update
, câest ce qui en fait un outil pro et fiableâŻ! Les limites sont largement compensĂ©es par la sĂ©curitĂ© et la maĂźtrise des Ă©volutions de ta base.
7. â Ce quâil ne faut PAS faire
- Laisser
ddl-auto=update
tourner en parallÚle de Flyway - Modifier la base « à la main » sans migration (oublie direct ce qui a été fait)
- Faire des scripts trop gros, ou peu explicites (âV15__global_changes.sqlâ)
- Oublier de tester sur une copie de la prod (avant dâexĂ©cuter en prod)
đ§ Conclusion
Avec Flyway, tu passes dâune gestion hasardeuse Ă une maĂźtrise totale de lâĂ©volution de ta base de donnĂ©es.
Fini les surprises et les conflits liés à ddl-auto=update
âŻ: chaque modification est tracĂ©e, testĂ©e, et versionnĂ©e.
Tu gagnes en transparence, en sécurité, et tu facilites le travail en équipe.
La base d’un projet solide commence par des migrations maĂźtrisĂ©es !