Springで初期データをdata.sqlで投入する方法

Springで初期データをdata.sqlで投入する方法

data.sqlというファイルをsrc/main/resources配下に置くことでSpring起動時にデータをテーブルにインサートすることができます。

但し、application.yamlの設定が必要です。

initialization-mode: alwaysが必要です。
※Spring Boot 2.5.0からはspring.sql.init.modeで指定する

ddl-auto: createとすることで、アプリを終了してもデータがインサートされたままとなります。

spring:
  datasource:
    initialization-mode: always
    url: jdbc:mysql://localhost:3306/ginkou?serverTimezone=UTC
    username: root
    password: system
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    database: MYSQL
    hibernate:
      ddl-auto: create

ddl-auto: create-dropとすると、アプリ終了時にテーブルがdropされてしまいます。

ddl-auto: updateとすると、テーブルがcreateされたりdropされない為、既にデータが存在する場合は、初期データ投入のinsert文で重複キーでエラーとなってしまいます。(Duplicate entry ‘1’ for key ‘PRIMARY’)

Duplicate keyのエラーを回避したい場合はinsert文をON CONFLICT ~ DO NOTHING;を使用したりしておけば大丈夫です。

また、flywayやliquibaseなどのDBマイグレーションツールを使う手もありです。

insertした初期データが日本語が文字化けする場合

これは、data.sqlをutf-8で保存することで解決できます。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました