脚本宝典收集整理的这篇文章主要介绍了

Java敏捷数据库迁移框架——Flyway

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

Flyway Logo

看看自己的项目的那些SQL文件或者干脆连个建表语句都没有的同学是否会有想法把他们管理起来呢?向大家推荐一款非常轻量级的敏捷数据库迁移框架——Flyway。想知道她有什么魅力吗?

Flyway为大家提供了如下的实现方式:

  • Java API

  • 命令行

  • Maven

  • Gradle

  • Ant

  • SBT

为了减少描述难度在这里使用了Java API,项目构建方式为Maven,数据库为MySQL

需要环境

创建项目

首先我们要在命令行中使用Maven原型插件执行如下命令

mvn archetype:generate -B          -DarchetypeGroupId=org.apache.maven.archetypes          -DarchetypeArtifactId=maven-archetype-quickstart          -DarchetypeVersion=1.1          -DgroupId=foo          -DartifactId=bar          -Dversion=1.0-SNAPSHOT          -Dpackage=foobar

我们已经准备好开始了。当前项目的结构如下

. |-- pom.xml `-- src     |-- main     |   `-- java     |       `-- foobar     |           `-- App.java     `-- test         `-- java             `-- foobar                 `-- AppTest.java

进入创建的项目

cd bar

增加Flyway依赖

编辑当前目录下的pom.xml,增加Flyway和MySQL的依赖

<project ...>     ...     <dependencies>         <dependency>             <groupId>com.googlecode.flyway</groupId>             <artifactId>flyway-core</artifactId>             <version>2.3</version>         </dependency>         <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <version>5.1.6</version>         </dependency>         ...     </dependencies>     ... </project>

整合Flyway

现在我们可以将Flyway的代码放入项目中,并配置数据库,例如增加到默认生成的:src/main/java/foobar/App.java

package foobar;  import com.googlecode.flyway.core.Flyway;  public class App {     public static void main(String[] args) {         // 创建Flyway实例         Flyway flyway = new Flyway();          // 设置数据库         flyway.setDataSource("jdbc:mysql://localhost:3306/foobar", "user", "pass");          // 开始迁移         flyway.migrate();     } }

创建第一个数据迁移

创建数据迁移目录src/main/resources/db/migration,执行命令

mkdir -p src/main/resources/db/migration

创建我们的第一个数据迁移src/main/resources/db/migration/V1__Create_person_table.sql

CREATE TABLE person (     id INT,     name VARCHAR(100) );

执行程序

执行App.java(也可以直接在IDE中执行main方法)

mvn package exec:java -Dexec.mainClass=foobar.App -Dmaven.test.skip=true

如果你成功了,应该会得到如下信息

INFO: Creating Metadata table: `foobar`.`schema_version` Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate migrate INFO: Current version of schema `foobar`: << Empty Schema >> Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate applyMigration INFO: Migrating schema `foobar` to version 1 Feb 27, 2014 12:20:18 AM com.googlecode.flyway.core.command.DbMigrate logSummary INFO: Successfully applied 1 migration to schema `foobar` (execution time 00:00.194s).

持续增加数据迁移

假如我们现在需要增加第二个数据迁移,命名为:src/main/resources/db/migration/V2__Add_people.sql

INSERT INTO person (id, name) VALUES (1, 'Axel'); INSERT INTO person (id, name) VALUES (2, 'Mr. Foo'); INSERT INTO person (id, name) VALUES (3, 'Ms. Bar');

执行命令

mvn package exec:java -Dexec.mainClass=foobar.App -Dmaven.test.skip=true

输出如下

Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate migrate INFO: Current version of schema `foobar`: 1 Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate applyMigration INFO: Migrating schema `foobar` to version 2 Feb 27, 2014 12:25:00 AM com.googlecode.flyway.core.command.DbMigrate logSummary INFO: Successfully applied 1 migration to schema `foobar` (execution time 00:00.047s).

总结

通过Flyway让我们能很方便的管理数据库文件,并进行版本控制。文档地址

总结

以上是脚本宝典为你收集整理的

Java敏捷数据库迁移框架——Flyway

全部内容,希望文章能够帮你解决

Java敏捷数据库迁移框架——Flyway

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过