Cet article introduit l'utilisation de la voie de pulvérisation pour Springboot pour permettre la migration de la base de données. Il est partagé avec vous. Les détails sont les suivants:
Tout d'abord, permettez-moi d'abord de comprendre le fonctionnement de Flyway.
La solution la plus simple consiste à pointer un chemin de volant vers une base de données vide.
Il essaiera de trouver sa table de métadonnées. Lorsque la base de données est vide, le volet ne le trouvera pas, mais créez-le. Vous avez maintenant une base de données avec une seule table vide nommée Schema_version:
Ce tableau sera utilisé pour suivre l'état de la base de données. Après cela, Flyway commencera à numériser le système de fichiers de l'application ou le chemin de classe pour la migration. Ils peuvent être écrits en SQL ou Java.
Triez ensuite les migrations par leur numéro de version et appliquez dans l'ordre:
Au fur et à mesure que chaque migration est appliquée, le tableau des métadonnées sera mis à jour en conséquence:
schéma_version
Avec les métadonnées et l'état initial en place, nous pouvons désormais parler de la migration vers des versions plus récentes.
Flyway analysera à nouveau le système de fichiers de l'application ou le chemin de classe pour la migration. Vérifiez les migrations contre les tables de métadonnées. Si les numéros de version sont inférieurs ou égaux au numéro de version marqué comme la version actuelle, elles sont ignorées.
Les migrations restantes sont des migrations en attente: disponibles mais non appliquées.
Ensuite, ils trient par numéro de version et exécutent à leur tour:
Cette table de métadonnées est mise à jour, donc:
schéma_version
C'est ça! Chaque fois que vous avez besoin de développer une base de données, qu'il s'agisse de structure (DDL) ou de données de référence (DML), créez simplement une nouvelle migration avec un numéro de version supérieur à la version actuelle. La prochaine fois que le voile de volée commencera, il découvre et améliore la base de données en conséquence.
2. L'utilisation de la voie de migration à Springboot
Une façon consiste à définir la propriété hibernate.hbm2ddl.auto pour créer, créer-drop ou mettre à jour via la propriété Spring.jpa.hibernate.ddl-Auto de Spring Boot. Par exemple, pour définir hibernate.hbm2ddl.auto pour créer-drop, nous pouvons ajouter le contenu suivant dans application.yml:
Spring: JPA: Hibernate: DDL-Auto: Créer-Drop
Cependant, ce n'est pas idéal pour les environnements de production, car chaque fois que l'application redémarre la base de données, le schéma sera vidé et reconstruit à partir de zéro. Il peut être défini pour mettre à jour, mais même ainsi, nous ne recommandons pas de l'utiliser pour les environnements de production.
Il y a une autre façon. Nous pouvons définir le schéma dans Schema.SQL. Lors de la première exécution, il n'y a aucun problème à le faire, mais chaque fois que l'application est démarrée, ce script d'initialisation échoue car le tableau de données existe déjà. Cela nécessite des soins supplémentaires lors de la rédaction de scripts d'initialisation et de ne pas répéter le travail qui a été effectué.
Une meilleure option consiste à utiliser la bibliothèque de migration de base de données. Il utilise une série de scripts et d'enregistrements de base de données qui ont été utilisés et n'utilisent pas le même script plusieurs fois. Chaque package de déploiement d'une application contient ces scripts et la base de données peut être cohérente avec l'application. Spring Boot fournit une prise en charge automatique de la configuration pour deux bibliothèques de migration de base de données populaires.
Lorsque vous souhaitez utiliser l'une de ces bibliothèques dans Spring Boot, il vous suffit d'ajouter les dépendances correspondantes au projet et d'écrire un script. Commençons par la voie de migration.
1. Utilisez la voie de pulvérisation pour définir le processus de migration de la base de données
Flyway est une bibliothèque de migration de base de données open source très simple qui utilise SQL pour définir les scripts de migration. L'idée est que chaque script a un numéro de version, et Flyway exécutera ces scripts en séquence pour amener la base de données à l'état souhaité. Il enregistre également l'état du script exécuté et ne sera pas répété. Ici, dans l'application de lecture de la liste, nous commençons par une base de données vide sans tables de données et données. Par conséquent, ce script doit d'abord créer des tables de lecteur et réserver, y compris les contraintes de clés étrangères et les données d'initialisation. Listing 8-2 du code est un script de volée d'une base de données vide à un état disponible.
Script initial de la base de données de la voie de voile
Créer un lecteur de table (id série primaire, nom d'utilisateur Varchar (25) unique et non nulle, mot de passe varchar (25) pas null, fullname varchar (50) pas null); Créer un livre de table (id série primaire, auteur varchar (50) pas nul, description varchar (1000) pas null, isbn varchar (10) pas null, title varchar (250) pas null, Reader_username varchar (25) pas null, clé étrangère (Reader_Username) références Reader (username)); Créer une séquence hibernate_sequence; insérer dans le lecteur (nom d'utilisateur, mot de passe, fullname) valeurs ('craig', 'mot de passe', 'Craig Walls'); Comme vous pouvez le voir, le script de volonté est SQL. Ce qui le fait fonctionner, c'est son emplacement et son nom de fichier dans le chemin de classe. Les scripts de la voie de vol suivent tous une spécification de dénomination, contenant des numéros de version, comme le montre la figure 8-1.
Tous les scripts de la voie de voile ont des noms qui commencent par Capital Letter V, suivis du numéro de version du script. Suivi de deux soulignements et une description du script. Puisqu'il s'agit du premier script de l'ensemble du processus de migration, sa version est 1. La description peut être très flexible et est principalement utilisée pour aider à comprendre le but du script. Plus tard, nous devons ajouter une nouvelle table à la base de données ou ajouter un nouveau champ à la table de données existante. Vous pouvez créer un autre script avec la version numéro 2. Le script de vol de vol doit être placé sous le chemin / DB / migration par rapport au chemin racine de ClassPath de l'application. Par conséquent, dans le projet, le script doit être placé dans SRC / Main / Resources / DB / Migration. Vous devez également définir Spring.jpa.hibernate.ddl-Auto à aucun, de sorte que Hibernate ne crée pas de tables de données. Ceci est lié au contenu suivant dans Application.yml:
Spring: JPA: Hibernate: DDL-Auto: Aucun
Il ne reste plus qu'à ajouter la voie de la voie de survol en tant que dépendance de projet. À Gradle, cette dépendance ressemble à ceci:
compiler ("org.flywaydb: le core à volonté")Dans le projet Maven, cela ressemble à ceci:
<dependency> <proupId> org.flywayfb </rom grouped> <ArtefactId> Flyway-core </ artifactid> </Dependency>
Une fois l'application déployée et exécutée, Spring Boot détectera la voie de migration dans le chemin de classe et configurera automatiquement les haricots requis. Flyway affichera à son tour les scripts en / db / migration et exécutera ces scripts s'ils n'ont pas été exécutés. Une fois chaque script exécuté, écrivez un enregistrement dans la table Schema_version. La prochaine fois que l'application sera lancée, le volet examinera d'abord les enregistrements dans Schema_version et sautera ces scripts.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.