загрузить схему из .sql, чтобы создать отображение orm в springboot - PullRequest
0 голосов
/ 13 октября 2019

Есть ли способ загрузить схему базы данных из .sql или json или текстового файла, чтобы создать сопоставление ORM с JPA / Hibernate для базы данных при весенней загрузке при запуске сервера.

1 Ответ

0 голосов
/ 13 октября 2019

Spring Boot позволяет использовать инструменты миграции базы данных, такие как Liquibase и Flyway , подробнее об этом можно прочитать в официальной документации Spring .

Редактировать: из документов

85.5 Использовать инструмент миграции базы данных более высокого уровня

Spring Boot поддерживает два инструмента миграции высокого уровня: Flyway иLiquibase.

85.5.1 Выполнение миграции базы данных Flyway при запуске

Чтобы автоматически запускать миграции базы данных Flyway при запуске, добавьте org.flywaydb: flyway-core в ваш путь к классам.

Миграции - это скрипты в форме V __. Sql (с разделенной подчеркиванием версией, такой как '1' или '2_1'). По умолчанию они находятся в папке с именем classpath: db /igration, но вы можете изменить это местоположение, установив spring.flyway.locations. Это разделенный запятыми список одного или нескольких местоположений classpath: или filesystem :. Например, следующая конфигурация будет выполнять поиск сценариев как в расположении пути к классу по умолчанию, так и в каталоге / opt /igration:

spring.flyway.locations = classpath: db /igration, filesystem: / opt /igrationтакже добавьте специальный заполнитель {vendor} для использования специфичных для поставщика сценариев. Предположим следующее:

spring.flyway.locations = classpath: db /igration / {vendor} Вместо использования db /igration предыдущая конфигурация устанавливает папку для использования в соответствии с типом базы данных (например,БД / миграция / MySQL для MySQL). Список поддерживаемых баз данных доступен в DatabaseDriver.

FlywayProperties предоставляет большинство настроек Flyway и небольшой набор дополнительных свойств, которые можно использовать для отключения миграции или отключения проверки местоположения. Если вам нужен больший контроль над конфигурацией, рассмотрите возможность регистрации bean-компонента FlywayConfigurationCustomizer.

Spring Boot вызывает Flyway.migrate () для выполнения миграции базы данных. Если вы хотите больше контроля, предоставьте @Bean, который реализует FlywayMigrationStrategy.

Flyway поддерживает обратные вызовы SQL и Java. Чтобы использовать обратные вызовы на основе SQL, поместите сценарии обратного вызова в папку classpath: db /igration. Чтобы использовать обратные вызовы на основе Java, создайте один или несколько bean-компонентов, которые реализуют Callback. Любые такие бобы автоматически регистрируются в Flyway. Их можно заказать, используя @Order или реализуя Ordered. Компоненты, которые реализуют устаревший интерфейс FlywayCallback, также могут быть обнаружены, однако их нельзя использовать вместе с компонентами Callback.

По умолчанию Flyway автоматически подключает (@Primary) DataSource в вашем контексте и использует его для миграций. Если вы хотите использовать другой источник данных, вы можете создать его и пометить его @Bean как @FlywayDataSource. Если вы делаете это и хотите иметь два источника данных, не забудьте создать еще один и пометить его как @Primary. Кроме того, вы можете использовать собственный источник данных Flyway, установив spring.flyway. [Url, user, password] во внешних свойствах. Настройка либо spring.flyway.url, либо spring.flyway.user достаточно, чтобы Flyway использовал свой собственный источник данных. Если какое-либо из трех свойств не было установлено, будет использовано значение его эквивалентного свойства spring.datasource.

Существует пример Flyway, чтобы вы могли увидеть, как это настроить.

Вы также можете использовать Flyway для предоставления данных по конкретным сценариям. Например, вы можете поместить специфичные для теста миграции в src / test / resources, и они запускаются только тогда, когда ваше приложение запускается для тестирования. Кроме того, вы можете использовать специфичную для профиля конфигурацию для настройки spring.flyway.locations, чтобы определенные миграции выполнялись только тогда, когда конкретный профиль активен. Например, в application-dev.properties вы можете указать следующий параметр:

spring.flyway.locations = classpath: / db /igration, classpath: / dev / db /igration При этой настройке миграции вКоманда dev / db / миграции запускается только при активном профиле разработчика.

85.5.2 Выполнение миграций базы данных Liquibase при запуске

Для автоматического запуска миграций базы данных Liquibase при запуске добавьте org.liquibase: liquibase-core в путь к классам.

По умолчанию, основной журнал изменений читается из db / changelog / db.changelog-master.yaml, но вы можете изменить местоположение, установив spring.liquibase.change-log. В дополнение к YAML Liquibase также поддерживает форматы журнала изменений JSON, XML и SQL.

По умолчанию Liquibase автоматически связывает (@Primary) DataSource в вашем контексте и использует его для миграций. Если вам нужно использовать другой источник данных, вы можете создать его и пометить его @Bean как @LiquibaseDataSource. Если вы делаете это и хотите использовать два источника данных, не забудьте создать еще один и пометить его как @Primary. Кроме того, вы можете использовать собственный источник данных Liquibase, установив spring.liquibase. [Url, user, password] во внешних свойствах. Установка либо spring.liquibase.url, либо spring.liquibase.user является достаточной для того, чтобы Liquibase использовал свой собственный источник данных. Если какое-либо из трех свойств не задано, будет использоваться значение его эквивалентного свойства spring.datasource.

Подробную информацию о доступных настройках, таких как контексты, схема по умолчанию и другие, см. В LiquibaseProperties.

Существует образец Liquibase, чтобы вы могли увидеть, как все настроить.

Spring также поддерживает инициализацию базы данных самостоятельно, официальные документы здесь .

Spring Boot может автоматически создавать схему (сценарии DDL) вашего источника данных и инициализировать его (сценарии DML). Он загружает SQL из стандартных корневых путей к классам: schema.sql и data.sql соответственно.

...