最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flyway的簡(jiǎn)單介紹及使用詳解

 更新時(shí)間:2020年07月25日 11:30:03   作者:木西 - Muxy  
這篇文章主要介紹了Flyway的簡(jiǎn)單介紹及使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、開(kāi)發(fā)時(shí)管理數(shù)據(jù)庫(kù)遇到的問(wèn)題:

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

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

1、概念:

Flyway是獨(dú)立于數(shù)據(jù)庫(kù)的應(yīng)用、管理并跟蹤數(shù)據(jù)庫(kù)變更的數(shù)據(jù)庫(kù)版本管理工具。用通俗的話講,F(xiàn)lyway可以像SVN管理不同人的代碼那樣,管理不同人的sql腳本,從而做到數(shù)據(jù)庫(kù)同步。

2、支持的數(shù)據(jù)庫(kù)類(lèi)型:

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ī)范:

V+版本號(hào)(版本號(hào)的數(shù)字間以"."或"_"分隔開(kāi))+雙下劃線(用來(lái)分隔版本號(hào)和描述)+文件描述+后綴名,例如:V2017.9.30__Update.sql。

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

4、Flyway讀取sql腳本的默認(rèn)位置:

項(xiàng)目的源文件夾下的db/migration目錄。

5、指令:

一共就6個(gè)基本指令:migrate、clean、info、validate、baseline、repair。

三、Flyway 的優(yōu)勢(shì):

1、不僅支持sql 腳本,還支持Java 代碼直接操作數(shù)據(jù)庫(kù)(flyway-core-x.x.x.jar);

2、有Maven 插件;

3、支持命令行;

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

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

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

  

  2、將sql腳本放在Flyway默認(rèn)的db/migration目錄下,如果放在其他位置需要修改conf/flyway.conf文件中的flyway.locations。

3、根據(jù)自己的情況修改conf/flyway.conf文件中的flyway.url、flyway.user、flyway.password。

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

五、與Maven項(xiàng)目結(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(也可以寫(xiě)默認(rèn)路徑db/migration),并將sql文件放在下面。

3、增加flyway的java類(lèi):

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類(lèi)
 Flyway flyway = new Flyway();
 //設(shè)置加載數(shù)據(jù)庫(kù)的相關(guān)配置信息
 flyway.setDataSource(dataSource);
 //設(shè)置存放flyway metadata數(shù)據(jù)的表名,默認(rèn)"schema_version",可不寫(xiě)
 flyway.setTable("SCHMA_VERSION");
 //設(shè)置flyway掃描sql升級(jí)腳本、java升級(jí)腳本的目錄路徑或包路徑,默認(rèn)"db/migration",可不寫(xiě)
 flyway.setLocations("dataBase/sqlite");
 //設(shè)置sql腳本文件的編碼,默認(rèn)"UTF-8",可不寫(xiě)
 flyway.setEncoding("UTF-8");
 
 flyway.migrate();
 }
 }

4、在spring中實(shí)例化第3步的java類(lèi):

<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è)數(shù)據(jù)源,F(xiàn)lyway 的所有操作將針對(duì)這個(gè)數(shù)據(jù)源進(jìn)行;同時(shí)我們通過(guò)init-method 屬性指定了Spring 在實(shí)例化該bean 以后,主動(dòng)執(zhí)行該bean 的migrate 方法,而該方法內(nèi)會(huì)執(zhí)行Flyway 更新數(shù)據(jù)庫(kù)的操作。至此,我們達(dá)到了在應(yīng)用啟動(dòng)時(shí),Spring 實(shí)例化上下文的時(shí)候,在Spring 實(shí)例化flywayMigration 這個(gè)bean 的時(shí)候,自動(dòng)執(zhí)行Flyway 更新數(shù)據(jù)庫(kù)的操作。

5、處理Flyway 更新數(shù)據(jù)庫(kù)和代碼邏輯操作數(shù)據(jù)庫(kù)時(shí)的沖突(自己目前沒(méi)遇到,網(wǎng)上找到的,先留著備不時(shí)之需):

如果Flyway 還在更新數(shù)據(jù)庫(kù),沒(méi)有完成更新操作之前,應(yīng)用程序的其他邏輯已經(jīng)開(kāi)始使用數(shù)據(jù)庫(kù)進(jìn)行其他操作了,會(huì)導(dǎo)致應(yīng)用程序產(chǎn)生很多bug ,甚至根本運(yùn)行不起來(lái)。要解決這個(gè)問(wèn)題,我們可以利用Spring 的bean 依賴原理,讓關(guān)鍵的數(shù)據(jù)庫(kù)操作bean 依賴于flywayMigration 這個(gè)bean ,達(dá)到在flywayMigration 沒(méi)有實(shí)例化完成(數(shù)據(jù)庫(kù)更新操作完成)之前,不能進(jìn)行任何其他數(shù)據(jù)庫(kù)相關(guān)操作。

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

這樣,每次啟動(dòng)項(xiàng)目時(shí)就會(huì)自動(dòng)更新數(shù)據(jù)庫(kù),不必在為數(shù)據(jù)庫(kù)不同步煩惱了。

參考文章:

1、https://flywaydb.org/documentation/ (官網(wǎng))

2、http://casheen.iteye.com/blog/1749916

3、http://shuzheng5201314.iteye.com/blog/2044517

4、http://m.fzitv.net/article/191708.htm

到此這篇關(guān)于Flyway的簡(jiǎn)單介紹及使用的文章就介紹到這了,更多相關(guān)Flyway的簡(jiǎn)單介紹及使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mapboxgl?中插值表達(dá)式的應(yīng)用場(chǎng)景分析

    mapboxgl?中插值表達(dá)式的應(yīng)用場(chǎng)景分析

    interpolate是mapboxgl地圖樣式中用于插值的表達(dá)式,能對(duì)顏色和數(shù)字進(jìn)行插值,這篇文章就把?mapboxgl?中interpolate插值工具的常見(jiàn)應(yīng)用場(chǎng)景介紹一下,感興趣的朋友一起看看吧
    2022-09-09
  • 聊聊Druid register mbean error的問(wèn)題

    聊聊Druid register mbean error的問(wèn)題

    這篇文章主要介紹了Druid register mbean error的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 支付寶小程序向用戶發(fā)紅包的實(shí)現(xiàn)方法

    支付寶小程序向用戶發(fā)紅包的實(shí)現(xiàn)方法

    這篇文章主要介紹了支付寶小程序向用戶發(fā)紅包的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python實(shí)現(xiàn)用戶登錄并且輸入錯(cuò)誤三次后鎖定該用戶

    Python實(shí)現(xiàn)用戶登錄并且輸入錯(cuò)誤三次后鎖定該用戶

    這篇文章主要介紹了Python實(shí)現(xiàn)用戶登錄并且輸入錯(cuò)誤三次后鎖定該用戶,文中通過(guò)c#代碼給大家補(bǔ)充介紹了密碼輸入三次錯(cuò)誤后鎖定用戶功能,需要的朋友可以參考下
    2020-01-01
  • 解決Git?Bash中文亂碼的問(wèn)題

    解決Git?Bash中文亂碼的問(wèn)題

    這篇文章介紹了解決Git?Bash中文亂碼的的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 關(guān)注程序員健康:程序最需要注意的幾件事

    關(guān)注程序員健康:程序最需要注意的幾件事

    這篇文章主要介紹了關(guān)注程序員健康:程序最需要注意的幾件事,本文列舉了熬夜、久坐、外賣(mài)和泡面、缺乏鍛煉、用眼過(guò)度等5個(gè)方面,需要的朋友可以參考下
    2014-09-09
  • Git在項(xiàng)目協(xié)作開(kāi)發(fā)中所解決問(wèn)題

    Git在項(xiàng)目協(xié)作開(kāi)發(fā)中所解決問(wèn)題

    這篇文章主要為大家介紹了Git在項(xiàng)目協(xié)作開(kāi)發(fā)中所解決問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • prometheus安裝和使用過(guò)程

    prometheus安裝和使用過(guò)程

    Prometheus是一個(gè)開(kāi)源的系統(tǒng)監(jiān)控和報(bào)警系統(tǒng),通常會(huì)搭配prometheus進(jìn)行監(jiān)控,同時(shí)也支持多種exporter采集數(shù)據(jù),還支持pushgateway進(jìn)行數(shù)據(jù)上報(bào),Prometheus性能足夠支撐上萬(wàn)臺(tái)規(guī)模的集群,這篇文章主要介紹了prometheus安裝和使用記錄,需要的朋友可以參考下
    2023-06-06
  • SecureCRT的使用超詳細(xì)教程

    SecureCRT的使用超詳細(xì)教程

    SecureCRT是Windows下登錄UNIX或Linux服務(wù)器主機(jī)的軟件,優(yōu)點(diǎn)是可以一次創(chuàng)建多個(gè) Tab Page,連接多臺(tái)遠(yuǎn)程主機(jī),下面給大家介紹下SecureCRT的使用超詳細(xì)教程,感興趣的朋友一起看看吧
    2021-11-11
  • Trie樹(shù)_字典樹(shù)(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)

    Trie樹(shù)_字典樹(shù)(字符串排序)簡(jiǎn)介及實(shí)現(xiàn)

    有時(shí),我們會(huì)碰到對(duì)字符串的排序,若采用一些經(jīng)典的排序算法,則時(shí)間復(fù)雜度一般為O(n*lgn),但若采用Trie樹(shù),則時(shí)間復(fù)雜度僅為O(n)
    2014-03-03

最新評(píng)論

肇庆市| 五华县| 马山县| 凯里市| 连云港市| 青冈县| 梧州市| 麻阳| 珲春市| 沂源县| 洞口县| 新田县| 宿州市| 平和县| 鄄城县| 嫩江县| 麻阳| 长岭县| 巴里| 齐河县| 肇源县| 彭山县| 廊坊市| 淄博市| 扶风县| 锦州市| 武定县| 隆子县| 尼勒克县| 临沭县| 隆化县| 彰化县| 北流市| 同仁县| 华容县| 台江县| 永安市| 丹寨县| 桓台县| 杂多县| 延安市|