Перейти к основному содержимому

Spring Boot с несколькими файлами импорта SQL

· 2 мин. чтения

Задача: Медиана двух отсортированных массивов

Даны два отсортированных массива размерами n и m. Найдите медиану слияния этих двух массивов.
Временная сложность решения должна быть O(log(m + n)) ...

ANDROMEDA

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 .