1. 概要

Spring Bootを使用すると、主に統合テスト用のデータを準備するために、サンプルデータをデータベースにインポートできます。 箱から出して、2つの可能性があります。 import.sql(Hibernateサポート)またはdata.sql(Spring JDBCサポート)ファイルを使用してデータをロードできます

ただし、読みやすさを向上させたり、モジュール間でinitデータと一部のファイルを共有したりするために、1つの大きなSQLファイルをいくつかの小さなファイルに分割したい場合があります。

このチュートリアルでは、HibernateとSpringJDBCの両方でそれを行う方法を示します。

2. Hibernateサポート

プロパティspring.jpa.properties.hibernate.hbm2ddl.import_filesを使用してロードするサンプルデータを含むファイルを定義できます。 テストリソースフォルダ内のapplication.propertiesファイルで設定できます。

これは、JUnitテストのためだけにサンプルデータをロードしたい場合です。 値は、インポートするファイルのコンマ区切りのリストである必要があります。

spring.jpa.properties.hibernate.hbm2ddl.import_files=import_active_users.sql,import_inactive_users.sql

この構成では、import_active_users.sqlimport_inactive_users.sqlの2つのファイルからサンプルデータが読み込まれます。 ここで重要なのは、プレフィックスspring.jpa.propertiesを使用して値(JPA構成)をEntityManagerFactoryに渡す必要があるということです。

次に、SpringJDBCサポートを使用してそれを行う方法を示します。

3. SpringJDBCサポート

初期データの構成と Spring JDBCのサポートは、Hibernateと非常によく似ています。 spring.sql.init.data-locationsを使用する必要があります財産:

spring.sql.init.data-locations=import_active_users.sql,import_inactive_users.sql

上記のように値を設定すると、Hibernateサポートの場合と同じ結果が得られます。 ただし、このソリューションの重要なの利点は、Antスタイルのパターンを使用して値を定義できることです。

spring.sql.init.data-locations=import_*_users.sql

上記の値は、 import _ * _ users.sql パターンに一致する名前のすべてのファイルを検索し、内部にあるデータをインポートするようにSpringに指示します。

このプロパティはSpringBoot2.5.0で導入されました;以前のバージョンのSpringBootでは、spring.datasource.dataプロパティを使用する必要があります。

4. 結論

この短い記事では、カスタムSQLファイルから初期データをロードするようにSpringBootアプリケーションを構成する方法を示しました。

最後に、HibernateとSpringJDBCの2つの可能性を示しました。 どちらも非常にうまく機能し、どちらを選択するかは開発者次第です。

いつものように、この記事で使用されている完全なコード例は、Githubから入手できます。