久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

Flyway 使用詳解

Flyway 使用詳解

一、開發時管理數據庫遇到的問題:

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

二、Flyway 的簡單介紹:

1、概念:

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

2、支持的數據庫類型:

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腳本的命名規范:

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

注:版本號不能相同!

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

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

5、指令:

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

三、Flyway 的優勢:

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

2、有Maven 插件;

3、支持命令行;

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

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

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

  Flyway 使用詳解

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

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

4、在命令行執行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文件放在下面。

Flyway 使用詳解

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 以后,主動執行該bean 的migrate 方法,而該方法內會執行Flyway 更新數據庫的操作。至此,我們達到了在應用啟動時,Spring 實例化上下文的時候,在Spring 實例化flywayMigration 這個bean 的時候,自動執行Flyway 更新數據庫的操作。

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

如果Flyway 還在更新數據庫,沒有完成更新操作之前,應用程序的其他邏輯已經開始使用數據庫進行其他操作了,會導致應用程序產生很多bug ,甚至根本運行不起來。要解決這個問題,我們可以利用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教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
92国产精品| 久久99青青| 日韩成人免费| 国产激情在线播放| 色综合www| 99香蕉国产精品偷在线观看 | 亚洲精品成人一区| 日韩av一二三| 成人午夜毛片| 91精品精品| 老鸭窝毛片一区二区三区| 五月激激激综合网色播| 国产精品亚洲综合色区韩国| 国产精品99视频| 免费精品国产的网站免费观看| 日韩中文字幕av电影| 国产精品一线| 欧美亚洲国产一区| 婷婷成人av| 久久精品九色| 亚洲深夜福利| 国产精品久一| 亚洲黄页一区| 欧美国产免费| 日韩一级网站| 美女久久久久久| 欧美一级精品| 日本久久二区| 不卡一二三区| 日韩超碰人人爽人人做人人添| 国产精品不卡| 亚洲91网站| 日韩在线不卡| 国产日韩视频在线| 久久精品国产99久久| 日韩有码av| 久久国产影院| 国产精品白丝av嫩草影院| 欧美日韩一区二区综合| 国产精品一国产精品k频道56| 99久久久国产精品美女| 久久狠狠亚洲综合| 国产精品毛片| 日韩电影免费网站| 欧美天堂在线| 久久亚洲不卡| 久久蜜桃资源一区二区老牛| 日本国产一区| 99国产成+人+综合+亚洲欧美| 国产精品xxx| 丝袜诱惑制服诱惑色一区在线观看| 九九99久久精品在免费线bt| 丝袜国产日韩另类美女| 天堂av在线| 国产精品一国产精品k频道56| 午夜免费一区| 91麻豆国产自产在线观看亚洲| 日本欧美一区二区在线观看| 国产视频一区欧美| 在线一区av| 国产成人精品一区二区三区免费| 丝袜国产日韩另类美女| 久久蜜桃av| 精品国产第一福利网站| 你懂的亚洲视频| 日本在线不卡视频一二三区| 免费欧美日韩| 99国产精品久久久久久久| 国精品产品一区| 国产精品色婷婷在线观看| 视频一区在线播放| 99日韩精品| 欧美日韩国产免费观看| 久久久成人网| 久久青草久久| 久久激情中文| 亚洲香蕉网站| 婷婷成人在线| 久久香蕉国产| 亚洲性视频h| 高清不卡亚洲| 高潮一区二区| 亚洲v在线看| 欧美特黄一级大片| 欧美日韩中文一区二区| 欧美日韩一二三四| 亚洲福利精品| 黄页网站一区| 在线看片一区| 日韩精品中文字幕一区二区| 亚洲精品第一| 69堂免费精品视频在线播放| 日韩二区在线观看| 国产精品亚洲综合在线观看| 国产精品久久久久久久久免费高清| 婷婷视频一区二区三区| 欧美亚洲tv| 久久超碰99| 国产 日韩 欧美 综合 一区| 成人国产精选| 91精品一区二区三区综合| 1000部精品久久久久久久久| 亚洲电影在线| 天堂av在线一区| 日韩国产在线观看| 国产精品久一| 日韩深夜视频| 影音先锋国产精品| 亚洲精品美女91| 国产麻豆一区二区三区精品视频| 国产欧美91| 日本一二区不卡| 国产综合亚洲精品一区二| 丝袜美腿亚洲色图| 69精品国产久热在线观看| 国产乱码精品一区二区三区四区 | 欧美成人a交片免费看| 欧美午夜精彩| 最新国产精品| 麻豆精品国产91久久久久久| 桃色一区二区| 欧美精品一区二区久久| 深夜日韩欧美| 精品国产a一区二区三区v免费| 精精国产xxxx视频在线野外| 午夜精品网站| 国产欧美精品久久| 欧美精品资源| 亚洲精品伦理| 国产精品福利在线观看播放| 欧美特黄a级高清免费大片a级| 亚洲精品美女| 91日韩在线| 中文字幕视频精品一区二区三区 | 国产色播av在线| 精品一区毛片| 国产欧美日韩在线观看视频| 久久91导航| 7777精品| 欧美日韩国产综合网| 国产精品视频一区二区三区综合| 99久久99视频只有精品| 日韩国产欧美在线视频| 欧美日韩国产v| 日韩美女精品| 成人在线网站| 日本91福利区| 激情自拍一区| 国产精品mv在线观看| 国产精品视区| 久草精品视频| 亚洲人www| 色综合www| 国产精品99久久免费观看| 午夜久久一区| 水蜜桃精品av一区二区| 日韩欧美高清一区二区三区| 久久婷婷av| 国产精品片aa在线观看| 亚洲深夜福利| 中文字幕高清在线播放| 日韩在线观看一区二区三区| 久久精品国产大片免费观看| 国产精品a级| 中文字幕一区二区精品区| 天堂av在线| 免费在线亚洲欧美| 亚洲日本久久| 欧美特黄a级高清免费大片a级| 精品中文字幕一区二区三区| 亚洲tv在线| 99国产精品久久久久久久成人热| 色欧美自拍视频| 欧美a在线观看| 青草国产精品| 免费在线观看一区二区三区| 久久久久蜜桃| 超碰超碰人人人人精品| 麻豆一区二区三区| 欧美一级网址| 一区二区三区国产在线| 激情综合自拍| 在线手机中文字幕| 精品国产一区二区三区噜噜噜| 91欧美极品| 日本欧美韩国一区三区| 一区二区国产在线观看| 最新亚洲激情| 美女亚洲一区| 在线视频观看日韩| 久久人人99| 亚洲天堂黄色| 婷婷综合在线| 激情婷婷综合| 在线精品小视频| 99久久夜色精品国产亚洲1000部| 丁香六月综合| 色婷婷狠狠五月综合天色拍| 黑森林国产精品av| 中文字幕系列一区|