亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Flyway的簡單介紹及使用詳解

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

一、開發(fā)時管理數(shù)據(jù)庫遇到的問題:

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

二、Flyway 的簡單介紹:

1、概念:

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

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

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+版本號(版本號的數(shù)字間以"."或"_"分隔開)+雙下劃線(用來分隔版本號和描述)+文件描述+后綴名,例如:V2017.9.30__Update.sql。

注:版本號不能相同!

4、Flyway讀取sql腳本的默認位置:

項目的源文件夾下的db/migration目錄。

5、指令:

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

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

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

2、有Maven 插件;

3、支持命令行;

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

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

1、解壓下載flyway-commandlin 版本并解壓到本地,結構圖如下:

  

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

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

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

五、與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();
 //設置加載數(shù)據(jù)庫的相關配置信息
 flyway.setDataSource(dataSource);
 //設置存放flyway metadata數(shù)據(jù)的表名,默認"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 定義中我們可以看到,我們?yōu)閒lywayMigration 這個bean 實例注入了一個數(shù)據(jù)源,F(xiàn)lyway 的所有操作將針對這個數(shù)據(jù)源進行;同時我們通過init-method 屬性指定了Spring 在實例化該bean 以后,主動執(zhí)行該bean 的migrate 方法,而該方法內(nèi)會執(zhí)行Flyway 更新數(shù)據(jù)庫的操作。至此,我們達到了在應用啟動時,Spring 實例化上下文的時候,在Spring 實例化flywayMigration 這個bean 的時候,自動執(zhí)行Flyway 更新數(shù)據(jù)庫的操作。

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

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

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

這樣,每次啟動項目時就會自動更新數(shù)據(jù)庫,不必在為數(shù)據(jù)庫不同步煩惱了。

參考文章:

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

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

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

4、http://chabaoo.cn/article/191708.htm

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

相關文章

  • Git配置用戶簽名方式的拓展示例實現(xiàn)全面講解

    Git配置用戶簽名方式的拓展示例實現(xiàn)全面講解

    這篇文章主要為大家介紹了Git配置用戶簽名方式的拓展示例實現(xiàn)全面講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • HTTP提交方式之PUT詳細介紹及POST和PUT的區(qū)別

    HTTP提交方式之PUT詳細介紹及POST和PUT的區(qū)別

    這篇文章主要介紹了HTTP提交方式之PUT詳細介紹及POST和PUT的區(qū)別,本文簡潔易懂,需要的朋友可以參考下
    2014-07-07
  • Vscode編輯器的巧妙用法(快速格式化代碼的方法)

    Vscode編輯器的巧妙用法(快速格式化代碼的方法)

    今天小編給大家分享一款超好用的格式化神器,Vscode編輯器是一款很好用的編輯器,學會這個神器可以省去很多麻煩不需要手動一點點縮進,對Vscode編輯器代碼格式化感興趣的朋友一起看看吧
    2021-05-05
  • Vim配置完整示例詳解

    Vim配置完整示例詳解

    這篇文章主要介紹了Vim配置的相關資料,包括通用配置,常用插件配置,設置插件的方法,本文給大家講解的非常詳細,需要的朋友可以參考
    2024-01-01
  • 詳解SHA-256算法的原理以及C#和JS的實現(xiàn)

    詳解SHA-256算法的原理以及C#和JS的實現(xiàn)

    SHA-256 是 SHA-2 下細分出的一種算法。截止目前(2023-03)未出現(xiàn)“碰撞”案例,被視為是絕對安全的加密算法之一,本文主要介紹了SHA-256算法的原理以及C#和JS的實現(xiàn),希望對大家有所幫助
    2023-03-03
  • IntelliJ IDEA下的SVN使用(傻瓜式教學)

    IntelliJ IDEA下的SVN使用(傻瓜式教學)

    這篇文章主要介紹了IntelliJ IDEA下的SVN使用(傻瓜式教學),文中通過圖文示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • idea激活碼最新獲取方法(idea2020激活碼匯總)

    idea激活碼最新獲取方法(idea2020激活碼匯總)

    針對idea激活碼失效的情況,我們給大家?guī)碜钚碌膇dea激活碼以及相關激活教程,分享最新idea激活參數(shù)等信息。
    2020-02-02
  • 谷歌師兄的算法刷題筆記

    谷歌師兄的算法刷題筆記

    這篇文章主要介紹了谷歌師兄的算法刷題筆記的相關資料,需要的朋友可以參考下
    2021-02-02
  • C++ Go語言實現(xiàn)將windows和linux文件刪除至回收站

    C++ Go語言實現(xiàn)將windows和linux文件刪除至回收站

    這篇文章主要為大家詳細介紹了如何分別使用C++ Go語言實現(xiàn)將windows和linux文件刪除至回收站,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • matlab畫三維圖像的示例代碼(附demo)

    matlab畫三維圖像的示例代碼(附demo)

    這篇文章主要介紹了matlab畫三維圖像的示例代碼(附demo),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12

最新評論