成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java敏捷數(shù)據(jù)庫遷移框架——Flyway

不知名網(wǎng)友 / 2995人閱讀

摘要:看看自己的項(xiàng)目的那些文件或者干脆連個(gè)建表語句都沒有的同學(xué)是否會有想法把他們管理起來呢向大家推薦一款非常輕量級的敏捷數(shù)據(jù)庫遷移框架。

看看自己的項(xiàng)目的那些SQL文件或者干脆連個(gè)建表語句都沒有的同學(xué)是否會有想法把他們管理起來呢?向大家推薦一款非常輕量級的敏捷數(shù)據(jù)庫遷移框架——Flyway。想知道她有什么魅力嗎?

Flyway為大家提供了如下的實(shí)現(xiàn)方式:

Java API

命令行

Maven

Gradle

Ant

SBT

為了減少描述難度在這里使用了Java API,項(xiàng)目構(gòu)建方式為Maven,數(shù)據(jù)庫為MySQL

需要環(huán)境

Java 6+

Maven 2+

MySQL

創(chuàng)建項(xiàng)目

首先我們要在命令行中使用Maven原型插件執(zhí)行如下命令

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

我們已經(jīng)準(zhǔn)備好開始了。當(dāng)前項(xiàng)目的結(jié)構(gòu)如下

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

進(jìn)入創(chuàng)建的項(xiàng)目

cd bar
增加Flyway依賴

編輯當(dāng)前目錄下的pom.xml,增加Flyway和MySQL的依賴


    ...
    
        
            com.googlecode.flyway
            flyway-core
            2.3
        
        
            mysql
            mysql-connector-java
            5.1.6
        
        ...
    
    ...
整合Flyway

現(xiàn)在我們可以將Flyway的代碼放入項(xiàng)目中,并配置數(shù)據(jù)庫,例如增加到默認(rèn)生成的:src/main/java/foobar/App.java

package foobar;

import com.googlecode.flyway.core.Flyway;

public class App {
    public static void main(String[] args) {
        // 創(chuàng)建Flyway實(shí)例
        Flyway flyway = new Flyway();

        // 設(shè)置數(shù)據(jù)庫
        flyway.setDataSource("jdbc:mysql://localhost:3306/foobar", "user", "pass");

        // 開始遷移
        flyway.migrate();
    }
}
創(chuàng)建第一個(gè)數(shù)據(jù)遷移

創(chuàng)建數(shù)據(jù)遷移目錄src/main/resources/db/migration,執(zhí)行命令

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

創(chuàng)建我們的第一個(gè)數(shù)據(jù)遷移src/main/resources/db/migration/V1__Create_person_table.sql

CREATE TABLE person (
    id INT,
    name VARCHAR(100)
);
執(zhí)行程序

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

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

如果你成功了,應(yīng)該會得到如下信息

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).
持續(xù)增加數(shù)據(jù)遷移

假如我們現(xiàn)在需要增加第二個(gè)數(shù)據(jù)遷移,命名為: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");

執(zhí)行命令

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).
總結(jié)

通過Flyway讓我們能很方便的管理數(shù)據(jù)庫文件,并進(jìn)行版本控制。文檔地址

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17454.html

相關(guān)文章

  • Java敏捷數(shù)據(jù)庫遷移框架——Flyway

    摘要:看看自己的項(xiàng)目的那些文件或者干脆連個(gè)建表語句都沒有的同學(xué)是否會有想法把他們管理起來呢向大家推薦一款非常輕量級的敏捷數(shù)據(jù)庫遷移框架。 showImg(http://segmentfault.com/img/bVbV7p); 看看自己的項(xiàng)目的那些SQL文件或者干脆連個(gè)建表語句都沒有的同學(xué)是否會有想法把他們管理起來呢?向大家推薦一款非常輕量級的敏捷數(shù)據(jù)庫遷移框架——Flyway。想知道她有什...

    iflove 評論0 收藏0
  • 【jOOQ中文】3. 數(shù)據(jù)庫版本管理工具Flyway

    摘要:一簡介什么是是獨(dú)立于數(shù)據(jù)庫的應(yīng)用管理跟蹤數(shù)據(jù)庫變更的數(shù)據(jù)庫版本管理工具。當(dāng)升級完成時(shí),數(shù)據(jù)庫表結(jié)構(gòu)及數(shù)據(jù)應(yīng)當(dāng)與升級后的產(chǎn)品版本保持一致。 在執(zhí)行數(shù)據(jù)庫遷移時(shí),我們推薦使用jOOQ與Flyway - 數(shù)據(jù)庫遷移輕松。 在本章中,我們將簡單的來使用這兩個(gè)框架。 一、Flyway簡介 showImg(https://segmentfault.com/img/bVSjro?w=400&h=31...

    AprilJ 評論0 收藏0
  • 微服務(wù)化的基石——持續(xù)集成

    摘要:一持續(xù)集成對于微服務(wù)的意義拆之前要先解決合的問題在很多微服務(wù)化的文章中,很少會把持續(xù)集成放在第一篇,因?yàn)榇蠖鄶?shù)的文章都會將如何拆的問題,例如拆的粒度,拆的時(shí)機(jī),拆的方式。二持續(xù)集成就是不斷的嘗試在一起集成就是在一起。 此文已由作者劉超授權(quán)網(wǎng)易云社區(qū)發(fā)布。 歡迎訪問網(wǎng)易云社區(qū),了解更多網(wǎng)易技術(shù)產(chǎn)品運(yùn)營經(jīng)驗(yàn)。 一、持續(xù)集成對于微服務(wù)的意義:拆之前要先解決合的問題 在很多微服務(wù)化的文章中,很...

    Yangyang 評論0 收藏0
  • Spring-Boot學(xué)習(xí)筆記

    摘要:學(xué)習(xí)筆記使用很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行運(yùn)行內(nèi)嵌容器準(zhǔn)生產(chǎn)級別的基于框架的項(xiàng)目,使用你可以不用或者只需要很少的配置。異常消息如果這個(gè)錯(cuò)誤是由異常引起的。錯(cuò)誤發(fā)生時(shí)請求的路徑。 Spring-Boot 1.5 學(xué)習(xí)筆記 使用Spring Boot很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行(運(yùn)行jar,內(nèi)嵌Servlet容器)、準(zhǔn)生產(chǎn)級別的基于Spring框架的項(xiàng)目,使用Spring Boot你可以不用或者只需要很...

    curlyCheng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<