Flyway的简单介绍及使用

的简单介绍及使用
一、开发时管理数据库遇到的问题:
现在开发一般都是团队开发,这样就会出现项目同步的问题,代码同步可以通过SVN工具管理起来,那数据库同步怎么办呢?理想的情况下,在开发新项目的时候会首先把业务理清楚,把数据库表设计好,然后将数据库交给专门的人员维护,也就不存在数据库同步的问题了 。但实际情况呢?需求从项目开始到项目结束一直在变,很多公司就没有专门的数据库维护人员,数据库大家都在操作,都在修改,如果团队之间沟通及时还好,大家每次更新代码后顺便也更新一下数据库,如果沟通不及时,呵呵(大家自行脑补) 。。。这样数据库不同步的问题就凸显出来了 。
二、 的简单介绍: 1、概念:
是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具 。用通俗的话讲,可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步 。
2、支持的数据库类型:
, SQL , SQL Azure, DB2, DB2 z/OS, MySQL (RDS), ,Cloud SQL,(RDS and ), , , H2, Hsql, Derby, , SAP HANA, ,ASE and。
3、sql脚本的命名规范:
V+版本号(版本号的数字间以"."或"_"分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V2017.9..sql 。
注:版本号不能相同!
4、读取sql脚本的默认位置:
项目的源文件夹下的db/目录 。
5、指令:
一共就6个基本指令:、clean、info、、、 。

Flyway的简单介绍及使用

文章插图
三、 的优势:
1、不仅支持sql 脚本,还支持Java 代码直接操作数据库(-core-x.x.x.jar);
2、有Maven 插件;
3、支持命令行;
4、与 框结合,很方便地实现应用启动时自动检查并升级数据库的功能 。
四、命令行工具的使用:
1、解压下载- 版本并解压到本地,结构图如下:
Flyway的简单介绍及使用

文章插图
2、将sql脚本放在默认的db/目录下,如果放在其他位置需要修改conf/.conf文件中的. 。
3、根据自己的情况修改conf/.conf文件中的.url、.user、. 。
4、在命令行执行命令 。
五、与Maven项目结合使用: 1、引入依赖坐标:
org.flywaydbflyway-core4.2.0
2、在src/main/目录下建立存放sql版本文件的路径/(也可以写默认路径db/),并将sql文件放在下面 。
52e733072a810b1fedbb1e9fc4ad4cef
3、增加的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、在中实例化第3步的java类:

从上面的bean 定义中我们可以看到,我们为 这个bean 实例注入了一个数据源,的所有操作将针对这个数据源进行;同时我们通过init- 属性指定了 在实例化该bean 以后,主动执行该bean 的 方法,而该方法内会执行 更新数据库的操作 。至此,我们达到了在应用启动时,实例化上下文的时候,在 实例化 这个bean 的时候,自动执行 更新数据库的操作 。