Maison > Java > JavaBase > le corps du texte

Instructions détaillées pour l'utilisation de Flyway

Guanhui
Libérer: 2020-07-28 18:31:38
avant
3764 Les gens l'ont consulté

Instructions détaillées pour l'utilisation de Flyway

1. Problèmes rencontrés dans la gestion de la base de données lors du développement :

De nos jours, le développement est généralement réalisé en équipes, il y aura donc des problèmes de synchronisation du projet. La synchronisation du code peut être gérée via les outils SVN, mais qu'en est-il de la synchronisation des bases de données ? Idéalement, lors du développement d'un nouveau projet, vous clarifierez d'abord l'activité, concevrez les tables de la base de données, puis confierez la base de données à un personnel spécialisé pour la maintenance, afin qu'il n'y ait pas de problèmes de synchronisation de la base de données. Mais quelle est la situation réelle ? Les exigences ne cessent de changer du début à la fin du projet. De nombreuses entreprises ne disposent pas de personnel dédié à la maintenance de la base de données. Ce serait bien si l'équipe communiquait en temps opportun et que tout le monde mettait à jour le code à chaque fois. temps. Base de données, si la communication n'est pas opportune, haha ​​​​(vous pouvez vous faire votre propre idée). . . De cette manière, le problème de la désynchronisation des bases de données est mis en évidence.

2. Une brève introduction à Flyway :

1. Concept :

Flyway est. Outil indépendant de gestion des versions de base de données pour l'application, la gestion et le suivi des modifications de la base de données. En termes simples, Flyway peut gérer les scripts SQL de différentes personnes, tout comme SVN gère les codes de différentes personnes, réalisant ainsi la synchronisation des bases de données.

2. Types de bases de données pris en charge :

Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL (y compris Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL (y compris Amazon RDS et Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE et Phoenix.

3. Convention de nommage pour les scripts SQL :

V + numéro de version (les chiffres dans le numéro de version sont séparés par "." ou "_") + double soulignement (utilisé pour séparer le numéro de version et description) + description du fichier + nom du suffixe, par exemple : V2017.9.30__Update.sql.

Remarque : Les numéros de version ne peuvent pas être les mêmes !

4. L'emplacement par défaut dans lequel Flyway lit les scripts SQL :

Le répertoire db/migration sous le dossier source du projet.

5. Commandes :

Il y a 6 commandes de base au total : migrer, nettoyer, info, valider, baseline, réparer.

3. Avantages de Flyway :

1. Prend non seulement en charge les scripts SQL, mais prend également en charge le code Java pour faire fonctionner directement la base de données (flyway). -core-x.x.x. jar);

2. A un plug-in Maven ;

3. Prend en charge la ligne de commande

4. vérifier et mettre à niveau automatiquement la fonctionnalité de la base de données.

4. Utilisation de l'outil de ligne de commande Flyway :

1. Décompressez et téléchargez la version flyway-commandlin et décompressez-la localement. Le diagramme est le suivant :

 

 2. Placez le script SQL dans le répertoire db/migration par défaut de Flyway. S'il est placé à d'autres emplacements, vous devez modifier flyway.locations dans la conf. /fichier flyway.conf.

3. Modifiez flyway.url, flyway.user, flyway.password dans le fichier conf/flyway.conf en fonction de votre propre situation.

4. Exécutez la commande migrate sur la ligne de commande.

5. Utiliser en conjonction avec les projets Maven :

1 Introduire les coordonnées de dépendance :

<!-- flyway -->
 <dependency>
 <groupId>org.flywaydb</groupId>
 <artifactId>flyway-core</artifactId>
 <version>4.2.0</version>
 <dependency>
Copier après la connexion

Créer dans le fichier src/main/resources. répertoire Le chemin pour stocker le fichier de version SQL est dataBase/sqlite (vous pouvez également écrire le chemin par défaut db/migration) et placez le fichier SQL ci-dessous.

3. Ajoutez la classe java flyway :

package com.xxxxxx.flyway;
 
 import javax.sql.DataSource;
 import org.flywaydb.core.Flyway;
 
 public class MigrationSqlite {
 
 private DataSource dataSource;
 
 public void setDataSource(DataSource dataSource) {
 this.dataSource = dataSource;
 }
 
 public void migrate() {
 //初始化flyway类
 Flyway flyway = new Flyway();
 //设置加载数据库的相关配置信息
 flyway.setDataSource(dataSource);
 //设置存放flyway metadata数据的表名,默认"schema_version",可不写
 flyway.setTable("SCHMA_VERSION");
 //设置flyway扫描sql升级脚本、java升级脚本的目录路径或包路径,默认"db/migration",可不写
 flyway.setLocations("dataBase/sqlite");
 //设置sql脚本文件的编码,默认"UTF-8",可不写
 flyway.setEncoding("UTF-8");
 
 flyway.migrate();
 }
 }
Copier après la connexion

4 Instanciez la classe java à l'étape 3 au printemps :

<bean id="MigrationSqlite" class="com.xxxxxx.flyway.MigrationSqlite" init-method="migrate">
 <property name="dataSource" ref="dataSource"></property>
 </bean>
Copier après la connexion

De. Dans la définition du bean ci-dessus, nous pouvons voir que nous avons injecté une source de données dans l'instance du bean flywayMigration. Toutes les opérations de Flyway seront effectuées sur cette source de données en même temps, nous avons spécifié Spring via l'attribut init-method lors de l'instanciation ; Ensuite, la méthode migrate du bean est activement exécutée et, au sein de cette méthode, Flyway met à jour la base de données. Jusqu'à présent, nous avons atteint le point où Spring instancie le contexte au démarrage de l'application, et lorsque Spring instancie le bean flywayMigration, Flyway met automatiquement à jour la base de données.

5. Gérer les conflits lorsque Flyway met à jour la base de données et que la logique du code exploite la base de données (je ne l'ai pas encore rencontré, je l'ai trouvé en ligne, conservez-le en cas d'urgence) :

Si Flyway est toujours là Avant de mettre à jour la base de données, une autre logique de l'application a commencé à utiliser la base de données pour d'autres opérations avant de terminer l'opération de mise à jour, ce qui entraînera la génération de nombreux bugs par l'application, voire son exécution inexistante. Pour résoudre ce problème, nous pouvons utiliser le principe de dépendance du bean de Spring pour que les beans d'opération de base de données clés dépendent du bean flywayMigration, de sorte qu'aucune autre opération liée à la base de données ne puisse être effectuée jusqu'à ce que flywayMigration soit instancié (l'opération de mise à jour de la base de données est terminée).

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="MigrationSqlite">
 <property name="dataSource" ref="dataSource" />
 </bean>
Copier après la connexion

De cette façon, la base de données sera automatiquement mise à jour à chaque démarrage du projet, vous n'aurez donc pas à vous soucier de la désynchronisation de la base de données.

Tutoriel recommandé : "Tutoriel Java"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!