検索
ホームページJava&#&ベースFlyway の詳しい使用方法

Flyway の詳しい使用方法

1. 開発中のデータベース管理で発生した問題:

現在、開発はチームで行われるのが一般的であるため、プロジェクトの同期に問題が生じます。コードの同期は SVN ツールを使用して管理できますが、データベースの同期はどうなるのでしょうか?理想的には、新しいプロジェクトを開発するときは、最初にビジネスを明確にし、データベースのテーブルを設計し、その後メンテナンスのために専門の担当者にデータベースを引き渡すので、データベースの同期の問題は発生しません。しかし、実際の状況はどうなのでしょうか?要件はプロジェクトの最初から最後まで変化し続けます。多くの企業には専任のデータベース保守担当者がいません。全員がデータベースの操作と変更を行っています。チームがタイムリーにコミュニケーションをとり、全員が毎年コードを更新していれば問題ありません。データベース、コミュニケーションがタイムリーでない場合は、笑(自分で決めることができます)。 。 。このようにして、データベースが同期していない問題が浮き彫りになります。

2. Flyway の簡単な紹介:

1. コンセプト:

Flyway はデータベース アプリケーション、管理、およびデータベースの変更を追跡するための独立したデータベース バージョン管理ツール。平たく言えば、SVN がさまざまな人々のコードを管理するのと同じように、Flyway はさまざまな人々の SQL スクリプトを管理することができ、それによってデータベースの同期を実現します。

2. サポートされているデータベースの種類:

Oracle、SQL Server、SQL Azure、DB2、DB2 z/OS、MySQL (Amazon RDS を含む)、MariaDB、Google Cloud SQL、PostgreSQL (Amazon を含む) RDS および Heroku)、Redshift、Vertica、H2、Hsql、Derby、SQLite、SAP HANA、solidDB、Sybase ASE、および Phoenix。

3. SQL スクリプトの命名規則:

V バージョン番号 (バージョン番号の番号は「.」または「_」で区切られます) 二重アンダースコア (バージョン番号を区切るために使用されます)および説明) ファイル説明のサフィックス名 (例: V2017.9.30__Update.sql)。

注: バージョン番号を同じにすることはできません。

4. Flyway が SQL スクリプトを読み取るためのデフォルトの場所:

プロジェクトのソース フォルダーの下の db/migration ディレクトリ。

5. コマンド:

合計 6 つの基本コマンドがあります: 移行、クリーン、情報、検証、ベースライン、修復。

3. Flyway の利点:

1. SQL スクリプトをサポートするだけでなく、データベースを直接操作するための Java コードもサポートします (flyway -core-x.x.x.jar);

2. Maven プラグインあり;

3. コマンドラインをサポート;

4. Spring box と組み合わせると非常に便利データベース機能を自動的にチェックしてアップグレードします。

4. Flyway コマンド ライン ツールの使用:

1. flyway-commandlin バージョンを解凍してダウンロードし、ローカルで解凍します。

2. SQL スクリプトを Flyway のデフォルトの db/migration ディレクトリに配置します。別の場所に配置した場合は、conf 内の flyway.locations を変更する必要があります。 /flyway.conf ファイル。

3. 独自の状況に応じて、conf/flyway.conf ファイル内の flyway.url、flyway.user、flyway.password を変更します。

4. コマンドラインで移行コマンドを実行します。

5. Maven プロジェクトと組み合わせて使用​​する:

1. 依存関係座標を導入する:

<!-- flyway -->
 <dependency>
 <groupId>org.flywaydb</groupId>
 <artifactId>flyway-core</artifactId>
 <version>4.2.0</version>
 <dependency>

2. src/main/resources に作成するディレクトリ SQL バージョン ファイルを保存するパスは dataBase/sqlite (デフォルトのパス db/migration を記述することもできます) で、その下に SQL ファイルを配置します。

3. flyway の Java クラスを追加します:

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();
 }
 }

4. Spring のステップ 3 の Java クラスをインスタンス化します:

<bean id="MigrationSqlite" class="com.xxxxxx.flyway.MigrationSqlite" init-method="migrate">
 <property name="dataSource" ref="dataSource"></property>
 </bean>

上記の Bean 定義から、flywayMigration Bean インスタンスにデータ ソースを挿入したことがわかります。Flyway のすべての操作はこのデータ ソースに対して実行されます。同時に、インスタンス化時に init-method 属性を通じて Spring を指定します。その後、Bean の移行メソッドがアクティブに実行され、このメソッド内で Flyway がデータベースを更新します。ここまでで、アプリケーションの起動時に Spring がコンテキストをインスタンス化し、Spring が flywayMigration Bean をインスタンス化すると、Flyway がデータベースを自動的に更新するところまで到達しました。

5. Flyway がデータベースを更新し、コード ロジックがデータベースを操作するときに競合を処理します (私はまだ遭遇していませんが、オンラインで見つけました。緊急用に保管しておきます):

Flyway がデータベースを更新する前に、アプリケーションの他のロジックが更新操作を完了する前に他の操作にデータベースを使用し始めます。これにより、アプリケーションに多くのバグが発生したり、まったく実行されなくなったりすることがあります。この問題を解決するには、Spring の Bean 依存関係原則を使用して、主要なデータベース操作 Bean を flywayMigration Bean に依存させ、flywayMigration がインスタンス化される (データベース更新操作が完了する) まで、他のデータベース関連の操作を実行できないようにします。

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

この方法では、プロジェクトが開始されるたびにデータベースが自動的に更新されるため、データベースが同期していないことを心配する必要はありません。

推奨チュートリアル: 「Java チュートリアル

以上がFlyway の詳しい使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はjb51で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター