1. 開発中のデータベース管理で発生した問題:
現(xiàn)在、開発はチームで行われるのが一般的であるため、プロジェクトの同期に問題が生じます。コードの同期は SVN ツールを使用して管理できますが、データベースの同期はどうなるのでしょうか?理想的には、新しいプロジェクトを開発するときは、最初にビジネスを明確にし、データベースのテーブルを設(shè)計し、その後メンテナンスのために専門の擔當者にデータベースを引き渡すので、データベースの同期の問題は発生しません。しかし、実際の狀況はどうなのでしょうか?要件はプロジェクトの最初から最後まで変化し続けます。多くの企業(yè)には専任のデータベース保守擔當者がいません。全員がデータベースの操作と変更を行っています。チームがタイムリーにコミュニケーションをとり、全員が毎年コードを更新していれば問題ありません。データベース、コミュニケーションがタイムリーでない場合は、笑(自分で決めることができます)。 。 。このようにして、データベースが同期していない問題が浮き彫りになります。
2. Flyway の簡単な紹介:
1. コンセプト:
Flyway はデータベース アプリケーション、管理、およびデータベースの変更を追跡するための獨立したデータベース バージョン管理ツール。平たく言えば、SVN がさまざまな人々のコードを管理するのと同じように、Flyway はさまざまな人々の SQL スクリプトを管理することができ、それによってデータベースの同期を?qū)g現(xiàn)します。
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 スクリプトの命名規(guī)則:
V バージョン番號 (バージョン番號の番號は「.」または「_」で區(qū)切られます) 二重アンダースコア (バージョン番號を區(qū)切るために使用されます)および説明) ファイル説明のサフィックス名 (例: 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 內(nèi)の flyway.locations を変更する必要があります。 /flyway.conf ファイル。
3. 獨自の狀況に応じて、conf/flyway.conf ファイル內(nèi)の flyway.url、flyway.user、flyway.password を変更します。
4. コマンドラインで移行コマンドを?qū)g行します。
5. Maven プロジェクトと組み合わせて使用??する:
1. 依存関係座標を?qū)毪工?
<!-- 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(); //設(shè)置加載數(shù)據(jù)庫的相關(guān)配置信息 flyway.setDataSource(dataSource); //設(shè)置存放flyway metadata數(shù)據(jù)的表名,默認"schema_version",可不寫 flyway.setTable("SCHMA_VERSION"); //設(shè)置flyway掃描sql升級腳本、java升級腳本的目錄路徑或包路徑,默認"db/migration",可不寫 flyway.setLocations("dataBase/sqlite"); //設(shè)置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 の移行メソッドがアクティブに実行され、このメソッド內(nèi)で Flyway がデータベースを更新します。ここまでで、アプリケーションの起動時に Spring がコンテキストをインスタンス化し、Spring が flywayMigration Bean をインスタンス化すると、Flyway がデータベースを自動的に更新するところまで到達しました。
5. Flyway がデータベースを更新し、コード ロジックがデータベースを操作するときに競合を処理します (私はまだ遭遇していませんが、オンラインで見つけました。緊急用に保管しておきます):
Flyway がデータベースを更新する前に、アプリケーションの他のロジックが更新操作を完了する前に他の操作にデータベースを使用し始めます。これにより、アプリケーションに多くのバグが発生したり、まったく実行されなくなったりすることがあります。この問題を解決するには、Spring の Bean 依存関係原則を使用して、主要なデータベース操作 Bean を flywayMigration Bean に依存させ、flywayMigration がインスタンス化される (データベース更新操作が完了する) まで、他のデータベース関連の操作を?qū)g行できないようにします。
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="MigrationSqlite"> <property name="dataSource" ref="dataSource" /> </bean>
この方法では、プロジェクトが開始されるたびにデータベースが自動的に更新されるため、データベースが同期していないことを心配する必要はありません。
推奨チュートリアル: 「Java チュートリアル 」
以上がF(xiàn)lyway の詳しい使用方法の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中國語版
中國語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)