LoginSignup
1
2

More than 3 years have passed since last update.

SpringBoot+Maven+PostgreSQLでFlywayの導入

Posted at

Ruby on Railsは、デフォルトでDBのマイグレーション機能が搭載されていますが、SpringBootでは自分で導入するしか有りません。マイグレーションツールであるFlywayを導入するのに手こずったため、纏めて行こうかと思います。

準備

pom.xml
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>

依存関係の階層に、このように書いてあげます。
合わせてmvnのコマンドを使用したいので、プラグインにも下記の通り指定しています。

pom.xml
<build>
         <plugins>
           <plugin>
               <groupId>org.flywaydb</groupId>
               <artifactId>flyway-maven-plugin</artifactId>
               <version>6.0.8</version>
               <configuration>
                   <url>DBのURLを指定して下さい?currentSchema=DB側でスキーマを指定している場合は指定して下さい。</url>
                 <user>DBのUSERを指定して下さい。</user>
                 <password></password>
                 <schemas>
                     <schema>ssp_engine</schema>
                 </schemas>
                 <baselineOnMigrate>true</baselineOnMigrate>
                 <baselineVersion>1.0</baselineVersion>
                     <baselineDescription>Initial</baselineDescription>
                 <locations>classpath:/db/migration</locations>
             </configuration>
           </plugin>
         </plugins>
</build>

あとは、Mavenでプロジェクトを更新してあげて、jarファイルをインポートします。

DBの命令ファイル作成

ファイル名は厳密に決まっているので、こちらを参考下さい。
Flyway使い方メモ

僕の場合、こんな感じになりました。
階層は、

-src/
  -main/
    |-java/
    |  -com/
    |    -example/
    |      -main.java
    -resources/
      -db/
        -migration/
          -V1_0__create_sequence.sql
          -V1_1__create_table.sql
          -V1_2__create_data.sql

ファイルの中身は、シーケンスオブジェクトを生成したり、テーブルを作って、中身を書いたりしてます。

コマンド実行

ご自身のお使いのターミナルで、対象となるファイルがある階層まで行き、下記のコマンドを実行すると実行出来ます。

マイグレーションを実行する

mvn flyway:migrate

データベース上の全てのオブジェクトを削除する

mvn flyway:clean

マイグレーションがどのバージョンまで実行されているかの情報を表示する

mvn flyway:info

データベースと用意されているSQLファイルのバージョンに差異が無いかを確認する

mvn flyway:validate

データベースのバージョン1にする

mvn flyway:init

状態がFailedになっているバージョンのメタデータを削除する

mvn flyway:repair

導入した感想

localで開発中に、フォーム等でCRUDの確認後、mvn flyway:cleanして、mvn flyway:migrateしてリセット目的でしか活用出来ていません。
もっと、有効活用の仕方があれば、聞きたいです。。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2