Как создать ddl-создание script с помощью современной установки Spring Boot + Data JPA и Hibernate?
В настоящее время я использую аннотацию по умолчанию @SpringBootApplication
со следующими свойствами в application.properties
:
spring.datasource.url=jdbc:mysql://localhost/dbname
spring.datasource.username=X
spring.datasource.password=X
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.naming_strategy=my.package.CustomNamingStrategy
Поскольку JPA 2.1, я должен иметь возможность использовать свойства javax.persistence.schema-generation.*
, но установка их в моем приложении application.properties, похоже, не имеет эффекта.
Я видел примеры как это, которые соединяют целую кучу дополнительных beans, но они не используют Mysql. И в любом случае, делая это, мне нужно настроить многие параметры, которые spring заботится обо мне сейчас.
Мои цели заключаются в следующем:
- Создайте создание схемы sql script на диалекте MYSQL
- без подключения к базе данных
- Вывести script в каталог сборки
- Также создание таблиц спящего режима будет огромным плюсом.
Я не хочу:
- Создание/удаление схем в живой базе данных
Lib версии:
hibernate : 4.3.11.FINAL
spring framework : 4.2.5.RELEASE
spring-boot : 1.3.3.RELEASE
spring-data-jpa : 1.10.1.RELEASE // for querydsl 4 support
spring-data-commons: 1.12.1.RELEASE // for querydsl 4 support
(Используя gradle, а не maven)
Ответы
Ответ 1
А, сразу после того, как я разместил этот вопрос, я увидел раздел документации spring:
73.5 Настроить свойства JPA Кроме того, все свойства в spring.jpa.properties. * передаются как обычные свойства JPA (с префиксом разделяется), когда локальный EntityManagerFactory создан.
Итак, чтобы ответить на мой собственный вопрос: префикс свойств javax.persistence с помощью spring.jpa.properties:
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql
После этого файл схемы был сгенерирован автоматически в корне проекта.
Ответ 2
Это специфичная для yml конфигурация для того, чтобы заставить весеннюю загрузку генерировать сценарий создания ddl в корневой папке:
spring:
jpa:
properties:
javax:
persistence:
schema-generation:
create-source: metadata
scripts:
action: create
create-target: create.sql
Ответ 3
Обновление jpa properties
создаст сценарии для вас.
<prop key="javax.persistence.schema-generation.scripts.action">drop-and-create</prop>
<prop key="javax.persistence.schema-generation.scripts.create-target">./create_mssql.sql</prop>
<prop key="javax.persistence.schema-generation.scripts.drop-target">./drop_mssql.sql</prop>
Это сгенерирует сценарии в указанном месте. Есть и другие свойства, которые могут быть использованы в различных случаях использования, пожалуйста, обратитесь сюда
Ответ 4
Для приложения spring -boot вам необходимо установить следующее в файле application.properties, чтобы получить файл create.sql
spring.jpa.generate-ddl=true
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql