Несколько файлов импорта SQL в Spring Загрузка
Следуя Spring Справочному руководству по загрузке, существует несколько способов, которыми мы можем импортировать данные при запуске приложения. В сочетании с базой данных в памяти это довольно удобно для тестирования.
Параметры: создать файл с именем import.sql
, который будет выбран Hibernate, или создать файл с именем data.sql
, который будет подхвачен Spring JDBC. Обе эти работы подходят для меня.
Однако мне нравится немного разбить мои проекты, поэтому в настоящее время у меня есть модель основного домена, где есть удобный импорт для настройки основных данных, таких как некоторые пользователи, которые используются повсеместно. У меня также есть функциональные проекты, в которых полезно повторно использовать тот же импорт базовых данных, но также импортировать некоторые дополнительные данные, специфичные для этой функции.
Здесь все работает не так хорошо.
Я нашел ответ на предыдущий вопрос, где Паскаль Тивент упомянул, что свойство hibernate.hbm2ddl.import_files
можно использовать для определения списка файлов, как из Hibernate 3.6.0.Beta1. Учитывая, что мой проект импортирует 4.3.1. Final, я подумал, что, возможно, это будет доступно.
Итак, я попытался добавить следующее к моей Spring Boot application.properties
:
spring.jpa.hibernate.hbm2ddl.import_files=/another-import.sql
и
hibernate.hbm2ddl.import_files=/another-import.sql
К сожалению, ни один из них не приведет к запуску импорта.
Так что мне интересно, я только что сделал беспорядок свойств выше (вполне вероятно). Или есть что-то еще, что мне нужно сделать?
Обратите внимание, что в качестве обходного пути я заметил, что Spring JDBC запускает data.sql
после запуска Hibernate import.sql
. Так что, пока мне не нужно больше двух импортных, я могу использовать import.sql
для базовых данных, а затем импортировать импорт конкретных проектов в data.sql
. Я могу справиться с этим, но это не решение.
Ответы
Ответ 1
Если вы действительно хотите использовать префикс свойства hibernate с spring.jpa.properties.
, поскольку они добавляются как свойства в EntityManagerFactory
. См. здесь в справочном руководстве по загрузке Spring.
spring.jpa.properties.hibernate.hbm2ddl.import_files=file1.sql,file2.sql
Однако вы также можете использовать свойства spring.datasource.data
и spring.datasource.schema
в своих интересах. По умолчанию они соответственно data
и schema
. Как вы можете видеть в классе DataSourceInitializer. Вы также можете установить их, и они берут список ресурсов, разделенных запятыми.
spring.datasource.data=classpath:/data-domain.sql,file:/c:/sql/data-reference.sql,data-complex.sql
Это становится еще лучше, потому что загрузка ресурсов также позволяет загружать ресурсы с ant шаблонами стилей.
spring.datasource.data=/META-INF/sql/init-*.sql
spring.datasource.schema=/META-INF/sql/schema-*.sql