Flyway的介绍和使用

一、使用Flyway的场景

公司项目组长给的任务,对已开发完成的项目,将项目迁移落地到另一个区域中,能够正常跑起来。但因为有些项目的数据库信息没有保存完整,需要整合成一个初始的数据库,当部署每个版本的项目,能有相对应版本的数据库使项目运行起来。组长提到了Flyway工具,于是网上查找了关于Flyway的使用。

二、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的使用(应用启动时自动运行Flyway的方式,本人使用的4.2.0版本)

1、引入pom文件:

		
		    org.flywaydb
		    flyway-core
		    4.2.0
		

2、定义在应用启动时自动运行Flyway 的Java 类,并实现其逻辑代码

package com.hfuu.config;

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();
    }
}

3、在spring配置文件中配置相关bean


  

4、利用Spring 的bean 依赖让sqlSessionFactory 和 transactionManager优先处理数据库更新操作



结语:有多种方式执行Flyway,本文只介绍结合spring,当应用自动启动时执行Flyway的方式。

你可能感兴趣的:(Flyway的介绍和使用)