Heim > Java > JavaBase > Hauptteil

Detaillierte Anweisungen zur Verwendung von Flyway

Guanhui
Freigeben: 2020-07-28 18:31:38
nach vorne
3783 Leute haben es durchsucht

Detaillierte Anweisungen zur Verwendung von Flyway

1. Probleme bei der Datenbankverwaltung während der Entwicklung:

Heutzutage wird die Entwicklung im Allgemeinen von Teams durchgeführt, daher wird es Probleme mit der Projektsynchronisierung geben. Die Codesynchronisierung kann über SVN-Tools verwaltet werden, aber wie sieht es mit der Datenbanksynchronisierung aus? Idealerweise klären Sie bei der Entwicklung eines neuen Projekts zunächst das Geschäft, entwerfen die Datenbanktabellen und übergeben die Datenbank dann zur Wartung an Fachpersonal, sodass keine Probleme mit der Datenbanksynchronisierung auftreten. Doch wie ist die Ist-Situation? Die Anforderungen ändern sich vom Anfang bis zum Ende des Projekts. Viele Unternehmen verfügen nicht über engagiertes Datenbankwartungspersonal. Es wäre in Ordnung, wenn das Team den Code jedes Mal aktualisiert Zeit. Wenn die Kommunikation nicht rechtzeitig erfolgt, haha ​​​​(Sie können sich selbst eine Meinung bilden). . . Auf diese Weise wird das Problem der nicht synchronisierten Datenbank hervorgehoben.

2. Eine kurze Einführung in Flyway:

1. Konzept:

Flyway ist Unabhängiges Tool zur Datenbankversionsverwaltung zur Datenbankanwendung, -verwaltung und -verfolgung von Datenbankänderungen. Laienhaft ausgedrückt kann Flyway die SQL-Skripte verschiedener Personen verwalten, genau wie SVN die Codes verschiedener Personen verwaltet, wodurch eine Datenbanksynchronisierung erreicht wird.

2. Unterstützte Datenbanktypen:

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

3. Namenskonvention für SQL-Skripte:

V + Versionsnummer (die Zahlen in der Versionsnummer werden durch „.“ oder „_“ getrennt) + doppelter Unterstrich (wird zur Trennung verwendet). Versionsnummer und Beschreibung) + Dateibeschreibung + Suffixname, zum Beispiel: V2017.9.30__Update.sql.

Hinweis: Die Versionsnummern dürfen nicht identisch sein!

4. Der Standardspeicherort für Flyway zum Lesen von SQL-Skripten:

Das Verzeichnis db/migration im Quellordner des Projekts.

5. Befehle:

Es gibt insgesamt 6 Grundbefehle: migrieren, bereinigen, info, validieren, baseline, reparieren.

3. Vorteile von Flyway:

1. Unterstützt nicht nur SQL-Skripte, sondern auch Java-Code zum direkten Betrieb der Datenbank (Flyway). -core-x.x.x Automatische Überprüfung und Aktualisierung der Datenbankfunktionalität.

4. Verwendung des Flyway-Befehlszeilentools:

1. Entpacken Sie die Flyway-Commandlin-Version und entpacken Sie sie lokal Das Diagramm lautet wie folgt:  

 2. Platzieren Sie das SQL-Skript im Standardverzeichnis db/migration von Flyway. Wenn es an anderen Orten platziert wird, müssen Sie flyway.locations in der conf ändern /flyway.conf-Datei.

3. Ändern Sie flyway.url, flyway.user, flyway.password in der Datei conf/flyway.conf entsprechend Ihrer eigenen Situation.

4. Führen Sie den Migrationsbefehl in der Befehlszeile aus.

5. Verwendung in Verbindung mit Maven-Projekten:

1. Abhängigkeitskoordinaten einführen:

<!-- flyway -->
 <dependency>
 <groupId>org.flywaydb</groupId>
 <artifactId>flyway-core</artifactId>
 <version>4.2.0</version>
 <dependency>
Nach dem Login kopieren

2 Verzeichnis Der Pfad zum Speichern der SQL-Versionsdatei lautet dataBase/sqlite (Sie können auch den Standardpfad db/migration schreiben) und die SQL-Datei unten platzieren.

3. Fügen Sie die Flyway-Java-Klasse hinzu:

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();
 }
 }
Nach dem Login kopieren

4. Instanziieren Sie die Java-Klasse in Schritt 3 im Frühjahr:

<bean id="MigrationSqlite" class="com.xxxxxx.flyway.MigrationSqlite" init-method="migrate">
 <property name="dataSource" ref="dataSource"></property>
 </bean>
Nach dem Login kopieren
From In der obigen Bean-Definition können wir sehen, dass wir eine Datenquelle in die FlywayMigration-Bean-Instanz eingefügt haben. Alle Vorgänge von Flyway werden gleichzeitig für diese Datenquelle ausgeführt. Bei der Instanziierung haben wir Spring über das Attribut init-method angegeben Anschließend wird die Migrationsmethode der Bean aktiv ausgeführt und innerhalb dieser Methode aktualisiert Flyway die Datenbank. Bisher haben wir den Punkt erreicht, an dem Spring den Kontext instanziiert, wenn die Anwendung gestartet wird, und wenn Spring die FlywayMigration-Bean instanziiert, aktualisiert Flyway automatisch die Datenbank.

5. Behandeln Sie Konflikte, wenn Flyway die Datenbank aktualisiert und die Codelogik die Datenbank betreibt (ich habe es noch nicht gefunden, ich habe es online gefunden, also behalte ich es für Notfälle):

Wenn Flyway ist noch da Vor dem Aktualisieren der Datenbank hat eine andere Logik der Anwendung begonnen, die Datenbank für andere Vorgänge zu verwenden, bevor der Aktualisierungsvorgang abgeschlossen wurde, was dazu führt, dass die Anwendung viele Fehler generiert oder sogar überhaupt nicht ausgeführt wird. Um dieses Problem zu lösen, können wir das Bean-Abhängigkeitsprinzip von Spring verwenden, um wichtige Datenbankoperations-Beans von der FlywayMigration-Bean abhängig zu machen, sodass keine anderen datenbankbezogenen Vorgänge ausgeführt werden können, bis FlywayMigration instanziiert wird (der Datenbankaktualisierungsvorgang ist abgeschlossen).

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="MigrationSqlite">
 <property name="dataSource" ref="dataSource" />
 </bean>
Nach dem Login kopieren

Auf diese Weise wird die Datenbank bei jedem Projektstart automatisch aktualisiert, sodass Sie sich keine Sorgen machen müssen, dass die Datenbank nicht synchron ist.

Empfohlenes Tutorial: „Java-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Anweisungen zur Verwendung von Flyway. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage