プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

SpringBoot入門 vol.15:Flywayマイグレーションでデータベースの管理をしよう

この章からはデータベースの管理(CREATE、INSERT等)はFlywayマイグレーションで行っていきます
 
前回までに作成した「CUSTOMER」テーブルは削除しておきましょう
 
 


■Flywayマイグレーションとは

データベースのバージョン管理ツールである
 

【特徴】

・アプリを新規作成した場合はSQLが全て適用される
・過去のバージョンのアプリの場合は差分のSQLのみ適用される
・DB更新のデグレが発生しないので、特に複数人で開発する際に役立つ
・アプリケーションを起動するとマイグレーションが実行される
 
 


①「build.gradle」に追記

記述場所:dependencies
記述コード:

implementation 'org.flywaydb:flyway-core'

 
 


②「application.properties」に追記

記述コード:

#Flywayマイグレーション
#ベースラインのバージョンを指定
spring.flyway.baselineVersion=0.0.0
#すでに存在するデータベースにFlywayを適用する為の設定
spring.flyway.baseline-on-migrate=true

 
 


③SQLファイル(V0_0_1__createAndInsertCustomer.sql)の作成

「CUSTOMER」テーブルの作成とレコードのインサートを実施するSQLファイル
 
格納先:src/main/resources/db/migration
 

CREATE TABLE CUSTOMER (
        ID INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
        NAME VARCHAR(20) NOT NULL COMMENT '名前',
        EMAIL VARCHAR(100) COMMENT 'メールアドレス'
        );

INSERT INTO CUSTOMER (NAME, EMAIL) VALUES ('田中', 'tanaka@hoge.com');
INSERT INTO CUSTOMER (NAME, EMAIL) VALUES ('山田', 'yamada@hoge.jp');
INSERT INTO CUSTOMER (NAME, EMAIL) VALUES ('川崎', 'kawasaki@hoge.co.jp');

 

【SQLファイル名のルール】

・最初の文字は半角大文字の「V」を指定すること
・バージョンとファイル名の間はアンダースコアを2つ続ける
・アンダースコアはドットに変換される
・ベースラインのバージョンと同じバージョンのSQLファイルの場合はSQLは実行されない
 
 


④「CUSTOMER」テーブルが作成されていることを確認

「CUSTOMER」テーブル以外に管理用の「FLYWAY_SCHEMA_HISTORY」テーブルも作成されていることを確認すること

SELECT * FROM CUSTOMER;
SELECT * FROM FLYWAY_SCHEMA_HISTORY;

 
 


前へ次へ
 
目次へ戻る