flyway框架對數據庫遷徙的支持配置(基於ruby on rails的db migrate 思想)

目的:基於ruby on rails 思想找到在java web下能夠支持數據庫常變更的一個框架(或者類似的框架)

引用oracle的ruby on rails :http://www.oracle.com/technetwork/cn/testcontent/kern-rails-migrations-085789-zhs.html

開發人員目前熱衷於使用 Ruby on Rails。這種轉移的一個重要原因是:Rails 提供了一個強健的框架,該框架構建在一種迄今爲止最靈活的語言的基礎上。

Rails 的特徵之一是“移植”概念。移植很好地說明了開發人員希望使用這一框架的原因:一般說來,管理數據庫模式的變更是開發人員小組最討厭的工作之一。大多數人依賴於將 DDL 存儲在修訂版控制中,時刻保持警惕,從而確保我們的數據庫創建腳本是最新的且每次運行時都一致。該解決方案非常不適合極限編程項目。由於 Rails 鼓勵迭代開發,人們很容易將持續的模式更改想像成噩夢。

flyway:


flyway 是一個敏捷工具,用於數據庫的移植。採用 Java 開發,支持所有兼容 JDBC 的數據庫。

主要用於在你的應用版本不斷升級的同時,升級你的數據庫結構和裏面的數據。

官方網站:http://flywaydb.org/

支持倆種模式遷徙:

1、基於sql文件遷徙:http://flywaydb.org/documentation/migration/sql.html

2、基於java文件遷徙:http://flywaydb.org/documentation/migration/java.html

可以以spring管理flyway框架,或者說相結合。


項目位置:(以基於sql文件舉例)


在項目源碼包中:

路徑爲 :db/migration   【如果不喜歡可以自己根據配置來命名位置】

命名規範:


1、前綴(可配置,默認值:V)

2、版本(以點或下劃線區分開來,只要你喜歡,你可以使用很多地方

3、分隔符(兩個下劃線)

4、描述(下劃線或空格分開)

5、後綴(可配置,默認情況下:SQL)


與spring管理配置

<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="..."/>
    ...
</bean>

<!-- The rest of the application (incl. Hibernate) -->
<!-- Must be run after Flyway to ensure the database is compatible with the code -->
<bean id="sessionFactory" class="..." depends-on="flyway">
    ...
</bean>


把dataSource 配置你的dataSource 、sessionFactory 依賴flyway就可以了。

關於flyway 的bean 裏的init-method 方法。

第一次可能需要你改爲init方法 初始化 schema_version表。

之後改爲migrate就可以了。


注意:flyway不支持版本回滾。(需手動,比較悲劇的一點)


以後數據多改欄位、或者類型的就不用來回通知研發人員了。

直接寫個版本sql文件就可以了,項目啓動時候會查看哪個執行過哪個沒執行。

flyway直接會往高版本遷徙。



flyway 源碼

http://grepcode.com/file/repo1.maven.org/maven2/com.googlecode.flyway/flyway-core/0.6/com/google/code/flyway/core/Flyway.java



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章