Contenu du cours
Backend Spring Boot
Backend Spring Boot
Migrations de Base de Données
Cette image montre la progression des migrations de base de données à travers les versions. Chaque version reflète les changements dans la structure de la base de données, tels que la création de tables, la modification de champs, ou l'ajout/suppression de colonnes, pour répondre aux exigences de l'application.
Lors du développement d'une application, vous pouvez avoir besoin de modifier le schéma de la base de données : ajouter de nouvelles tables, mettre à jour celles existantes, introduire des index, etc.
Les migrations aident à gérer ces changements de manière séquentielle et organisée, en assurant l'intégrité des données et en maintenant le schéma de la base de données aligné avec le code de l'application. Pour les migrations, nous utiliserons Flyway
.
Qu'est-ce que Flyway?
L'une des caractéristiques clés de Flyway
est son support pour la versionnage des migrations, vous permettant de suivre les modifications de la structure de la base de données et de revenir à des versions précédentes si nécessaire.
Créer une Migration Avec Flyway
Pour commencer, ajoutez la dépendance Flyway
à votre projet Spring Boot. Puisque nous utilisons Maven, ajoutez la dépendance suivante à votre fichier pom.xml
:
Nous allons également ajouter une autre dépendance JPA, qui fonctionne avec Flyway
. Nous aborderons JPA plus en détail plus tard.
Cette dépendance nous aidera à intégrer Flyway
dans notre projet ! Mais ce n'est pas tout, nous devons encore le configurer !
Bien sûr, Flyway
doit savoir avec quelle base de données il va travailler, nous devons donc spécifier explicitement la base de données et fournir les identifiants d'accès.
Les principales configurations peuvent être définies dans application.properties
:
Nous devons spécifier l'url
, l'user
, et le password
pour permettre à Flyway
de travailler avec notre base de données.
Cependant, pour éviter de saisir ces valeurs plusieurs fois, nous pouvons les référencer à partir d'autres paramètres en utilisant la syntaxe ${}
.
Dans le chapitre précédent, nous avons créé une base de données my_database
et ajouté une table book
à celle-ci. Cependant, nous pouvons maintenant supprimer la table book
car elle sera créée via une migration.
Maintenant, tout est prêt pour que nous créions notre première migration dans l'application ! Nous devons créer un dossier db
à l'intérieur du répertoire resources
, et dans ce dossier, en créer un autre nommé migration
. Le chemin complet devrait ressembler à ceci : src/main/resources/db/migration
.
Dans le répertoire de migration, nous pouvons maintenant créer des fichiers où nous allons définir nos modifications. Le format de fichier doit être V<version>__<description>.sql
.
Les migrations sont appliquées dans l'ordre de leurs versions. La numérotation des versions doit être séquentielle et sans lacunes. Par exemple, si vous avez des migrations V1__init.sql
et V2__add_column.sql
, la prochaine migration devrait être V3__another_change.sql
.
Dans le fichier de migration, vous pouvez écrire des scripts SQL pour définir la structure de la base de données, créer de nouvelles tables, colonnes, etc.
Écrivons le script pour créer la table books
, que nous avons créée manuellement dans le chapitre précédent, dans notre fichier V1__create_table_books.sql
.
Vous pouvez également ajouter un paramètre au fichier application.properties
qui spécifie où se trouvent les migrations, afin que Flyway
connaisse le chemin exact vers les fichiers de migration :
Après cela, exécutez l'application, et vous devriez voir la table créée avec les champs que vous avez spécifiés dans la migration!
Vous ne pouvez plus modifier la première version de la migration. Pour chaque changement de votre table, vous devrez créer un nouveau fichier de migration et ajouter le nouveau script là-bas!
Pourquoi les Migrations sont-elles Importantes ?
Les migrations sont nécessaires pour une gestion ordonnée des changements dans la base de données, préservant l'historique et permettant des retours en arrière si nécessaire.
Elles aident à synchroniser la structure de la base de données à travers différents environnements tels que développement, test, et production, tout en automatisant le processus de mise à jour, réduisant le risque d'erreurs, et assurant que le schéma de la base de données reste cohérent avec le code de l'application.
Chaque migration documente également des changements spécifiques, ce qui rend plus facile à comprendre et à maintenir le schéma de la base de données.
Résumé
L'utilisation de Flyway
simplifie et automatise le processus de gestion des changements de base de données, conduisant à un développement d'application plus fiable et efficace.
1. Qu'est-ce qu'une migration de base de données ?
2. Quel rôle jouent les versions de migration ?
Merci pour vos commentaires !