国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) Java Java基礎(chǔ) Flyway 使用詳解

Flyway 使用詳解

Jul 28, 2020 pm 06:31 PM

Flyway 使用詳解

#現(xiàn)在開發(fā)一般都是團(tuán)隊(duì)開發(fā),這樣就會(huì)出現(xiàn)專案同步的問(wèn)題,程式碼同步可以透過(guò)SVN工具管理起來(lái),那資料庫(kù)同步怎麼辦呢?理想的情況下,在開發(fā)新專案的時(shí)候會(huì)先把業(yè)務(wù)理清楚,把資料庫(kù)表設(shè)計(jì)好,然後將資料庫(kù)交給專門的人員維護(hù),也就不存在資料庫(kù)同步的問(wèn)題了。但實(shí)際情況呢?需求從專案開始到專案結(jié)束一直在變,很多公司就沒有專門的資料庫(kù)維護(hù)人員,資料庫(kù)大家都在操作,都在修改,如果團(tuán)隊(duì)之間溝通及時(shí)還好,大家每次更新程式碼後順便也更新一下資料庫(kù),如果溝通不及時(shí),呵呵(大家自行腦補(bǔ))。 。 。這樣資料庫(kù)不同步的問(wèn)題就凸顯出來(lái)了。

二、Flyway 的簡(jiǎn)單介紹:

1、概念:

Flyway是獨(dú)立於資料庫(kù)的應(yīng)用、管理並追蹤資料庫(kù)變更的資料庫(kù)版本管理工具。用通俗的話講,F(xiàn)lyway可以像SVN管理不同人的程式碼一樣,管理不同人的sql腳本,從而做到資料庫(kù)同步。 2、支援的資料庫(kù)類型:Oracle, SQL Server, SQL Azure, DB2, DB2 z/OS, MySQL (including Amazon RDS), MariaDB, Google Cloud SQL, PostgreSQL (including Amazon RDS and Heroku), Redshift, Vertica, H2, Hsql, Derby, SQLite, SAP HANA, solidDB, Sybase ASE and Phoenix。

3、sql腳本的命名規(guī)範(fàn):

V 版本號(hào)(版本號(hào)的數(shù)字間以"."或"_"分隔開) 雙底線(用來(lái)分隔版本號(hào)和描述) 檔案描述後綴名,例如:V2017.9.30__Update.sql。

註:版本號(hào)碼不能相同!

4、Flyway讀取sql腳本的預(yù)設(shè)位置:

專案的來(lái)源資料夾下的db/migration目錄。 5、指令:總共就6個(gè)基本指令:migrate、clean、info、validate、baseline、repair。

三、Flyway 的優(yōu)點(diǎn):

1、不只支援sql 腳本,也支援Java 程式碼直接操作資料庫(kù)(flyway-core-x.x.x. jar);

2、有Maven 外掛;

3、支援命令列;

4、與Spring 框結(jié)合,很方便地實(shí)現(xiàn)應(yīng)用程式啟動(dòng)時(shí)自動(dòng)檢查並升級(jí)資料庫(kù)的功能。

四、Flyway命令列工具的使用:

1、解壓縮下載flyway-commandlin 版本並解壓縮到本地,結(jié)構(gòu)圖如下:

  

  2、將sql腳本放在Flyway預(yù)設(shè)的db/migration目錄下,如果放在其他位置需要修改conf/flyway.conf檔案中的flyway.locations。

3、依照自己的狀況修改conf/flyway.conf檔案中的flyway.url、flyway.user、flyway.password。

4、在命令列執(zhí)行migrate指令。

五、與Maven專案結(jié)合使用:

######1、引入依賴座標(biāo):###
<!-- flyway -->
 <dependency>
 <groupId>org.flywaydb</groupId>
 <artifactId>flyway-core</artifactId>
 <version>4.2.0</version>
 <dependency>
###2、在src/main/resources目錄下建立存放sql版本檔案的路徑dataBase/sqlite(也可以寫預(yù)設(shè)路徑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ù)庫(kù)的相關(guān)配置信息
 flyway.setDataSource(dataSource);
 //設(shè)置存放flyway metadata數(shù)據(jù)的表名,默認(rèn)"schema_version",可不寫
 flyway.setTable("SCHMA_VERSION");
 //設(shè)置flyway掃描sql升級(jí)腳本、java升級(jí)腳本的目錄路徑或包路徑,默認(rèn)"db/migration",可不寫
 flyway.setLocations("dataBase/sqlite");
 //設(shè)置sql腳本文件的編碼,默認(rèn)"UTF-8",可不寫
 flyway.setEncoding("UTF-8");
 
 flyway.migrate();
 }
 }
###4、在spring中實(shí)例化第3步的java類別:###
<bean id="MigrationSqlite" class="com.xxxxxx.flyway.MigrationSqlite" init-method="migrate">
 <property name="dataSource" ref="dataSource"></property>
 </bean>
## #從上面的bean 定義中我們可以看到,我們?yōu)閒lywayMigration 這個(gè)bean 實(shí)例注入了一個(gè)資料來(lái)源,F(xiàn)lyway 的所有操作將針對(duì)這個(gè)資料來(lái)源進(jìn)行;同時(shí)我們透過(guò)init-method 屬性指定了Spring 在實(shí)例化該bean以後,主動(dòng)執(zhí)行該bean 的migrate 方法,而該方法內(nèi)會(huì)執(zhí)行Flyway 更新資料庫(kù)的操作。至此,我們達(dá)到了在應(yīng)用程式啟動(dòng)時(shí),Spring 實(shí)例化上下文的時(shí)候,在Spring 實(shí)例化flywayMigration 這個(gè)bean 的時(shí)候,自動(dòng)執(zhí)行Flyway 更新資料庫(kù)的操作。 ######5、處理Flyway 更新資料庫(kù)和程式碼邏輯作業(yè)資料庫(kù)時(shí)的衝突(自己目前沒遇到,網(wǎng)路上找到的,先留著備不時(shí)之需):######如果Flyway 還在更新資料庫(kù),沒有完成更新操作之前,應(yīng)用程式的其他邏輯已經(jīng)開始使用資料庫(kù)進(jìn)行其他操作了,會(huì)導(dǎo)致應(yīng)用程式產(chǎn)生許多bug ,甚至根本運(yùn)作不起來(lái)。要解決這個(gè)問(wèn)題,我們可以利用Spring 的bean 依賴原理,讓關(guān)鍵的資料庫(kù)操作bean 依賴flywayMigration 這個(gè)bean ,達(dá)到在flywayMigration 沒有實(shí)例化完成(資料庫(kù)更新作業(yè)完成)之前,不能進(jìn)行任何其他資料庫(kù)相關(guān)操作。 ###
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="MigrationSqlite">
 <property name="dataSource" ref="dataSource" />
 </bean>
###這樣,每次啟動(dòng)專案時(shí)就會(huì)自動(dòng)更新資料庫(kù),不必在為資料庫(kù)不同步煩惱了。 ###

推薦教學(xué):《Java教學(xué)

以上是Flyway 使用詳解的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276