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;