#現在開發一般都是團隊開發,這樣就會出現專案同步的問題,程式碼同步可以透過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 版本並解壓縮到本地,結構圖如下:
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>
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(); } }
<bean id="MigrationSqlite" class="com.xxxxxx.flyway.MigrationSqlite" init-method="migrate"> <property name="dataSource" ref="dataSource"></property> </bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" depends-on="MigrationSqlite"> <property name="dataSource" ref="dataSource" /> </bean>
推薦教學:《Java教學》
以上是Flyway 使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!