频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
flyway框架对数据库迁徙的支持配置(基于ruby on rails的db migrate 思想)
2013-01-18 16:39:46      个评论      
收藏   我要投稿
目的:基于ruby on rails 的思想找到在java web下能够支持数据库常变更的一个框架(或者类似的框架)

 

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

 

[plain] view plaincopy

开发人员目前热衷于使用 Ruby on Rails。这种转移的一个重要原因是:Rails 提供了一个强健的框架,该框架构建在一种迄今为止最灵活的语言的基础上。  

  

Rails 的特征之一是“移植”概念。移植很好地说明了开发人员希望使用这一框架的原因:一般说来,管理数据库模式的变更是开发人员小组最讨厌的工作之一。大多数人依赖于将 DDL 存储在修订版控制中,时刻保持警惕,从而确保我们的数据库创建脚本是最新的且每次运行时都一致。该解决方案非常不适合极限编程项目。由于 Rails 鼓励迭代开发,人们很容易将持续的模式更改想像成噩梦。  

 

flyway:

 

flyway 是一个敏捷工具,用于数据库的移植。采用 Java 开发,支持所有兼容 JDBC 的数据库。

 

主要用于在你的应用版本不断升级的同时,升级你的数据库结构和里面的数据。

 

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

 

支持俩种模式迁徙:

 

1、基于sql文件迁徙 

 

2、基于java文件迁徙 

可以以spring管理flyway框架,或者说相结合。

 

 

项目位置:(以基于sql文件举例)

 

在项目源码包中:

 

路径为 :db/migration   【如果不喜欢可以自己根据配置来命名位置】

 

命名规范:

 

1、前缀(可配置,默认值:V)

 

2、版本(以点或下划线区分开来,只要你喜欢,你可以使用很多地方)

 

3、分隔符(两个下划线)

 

4、描述(下划线或空格分开)

 

5、后缀(可配置,默认情况下:SQL)

 

 

 

与spring管理配置

 

 

[html] view plaincopy

<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

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 框架 思想 数据库
上一篇:JAVA版StarDict星际译王简单实现
下一篇:Java利用JDom解析和传递XML格式数据
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站