1. Обзор
Spring Boot позволяет нам импортировать образцы данных в нашу базу данных — в основном для подготовки данных для интеграционных тестов. Из коробки есть две возможности. Мы можем использовать файлы import.sql
(поддержка Hibernate) или data.sql
(поддержка Spring JDBC) для загрузки данных .
Однако иногда мы хотим разделить один большой файл SQL на несколько меньших, например, для лучшей читабельности или для того, чтобы разделить некоторые файлы с данными инициализации между модулями.
В этом уроке мы покажем, как это сделать с помощью Hibernate и Spring JDBC.
2. Поддержка режима гибернации
Мы можем определить файлы, которые содержат образцы данных для загрузки, с помощью свойства 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.sql
и import_inactive_users.sql
. Здесь важно отметить, что мы должны использовать префикс spring.jpa.properties
для передачи значений (конфигурации JPA) в EntityManagerFactory .
Далее мы покажем, как мы можем это сделать с поддержкой Spring JDBC.
3. Поддержка Spring JDBC
Конфигурация для исходных данных и поддержки 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
Приведенное выше значение указывает Spring искать все файлы с именем, которое соответствует шаблону import_*_users.sql
, и импортировать данные, которые находятся внутри.
Это свойство было введено в Spring Boot 2.5.0; в более ранних версиях Spring Boot нам нужно использовать свойство spring.datasource.data
.
4. Вывод
В этой короткой статье мы показали, как настроить приложение Spring Boot для загрузки исходных данных из пользовательских файлов SQL.
Наконец, мы показали две возможности — Hibernate и Spring JDBC. Они оба работают довольно хорошо, и разработчику решать, какой из них выбрать.
Как всегда, полные примеры кода, используемые в этой статье, доступны на Github .