相关疑难解决方法(0)

如何使用现代Spring Boot + Data JPA和Hibernate设置生成ddl创建脚本?

目前,我正在使用@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
Run Code Online (Sandbox Code Playgroud)

从JPA 2.1开始,我应该可以使用这些javax.persistence.schema-generation.*属性,但是在我的application.properties中设置它们似乎没有任何效果.

我见过的例子是这样那丝了一大堆额外的豆子,但他们没有使用MySQL.无论如何,这样做需要我配置春天为我提供的许多选项.

我的目标是:

  • 在MYSQL方言中生成模式创建sql脚本
  • 没有数据库连接是必需的
  • 输出构建目录中的脚本
  • 同时生成hibernate envers表也是一个巨大的优势.

我不想:

  • 在实时数据库上创建/删除模式

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
Run Code Online (Sandbox Code Playgroud)

(使用gradle,而不是maven)

hibernate spring-data spring-data-jpa spring-boot

44
推荐指数
3
解决办法
4万
查看次数

结合Hibernate的自动模式创建和数据库版本控制

我有一个应用程序,当应用程序第一次在计算机上运行时,Hibernate会创建我的所有表模式.这很好用.

然而,我想知道Hibernate是否有某种机制来保持数据库的版本控制,即当我运行不同版本的应用程序并且Hibernate从旧版本中找到不同的数据库模式时,Hibernate是否知道如何将一个模式迁移到另一个模式版本?考虑到Hibernate可以读取现有的模式并且可以将模式与映射描述进行比较,我认为这应该是可能的.但是我不知道如何在创建使用Liquibase/Flyway的更改脚本时告诉Hibernate迁移旧数据.

我可能没有用Google搜索正确的东西,因为Hibernate和版本控制会在审核和字段版本控制方面给你很多点击,但我更多地考虑了Liquibase/Flyway的版本控制.我从来没有考虑过这两者,但由于Hibernate不创建更新脚本而是直接操作数据库,我不知道如何使两者协同工作.

这是我第一次让Hibernate创建我的架构而不是编写我自己的脚本.我这样做是为了利用Hibernate Envers使得手动脚本创建更加繁琐.也许我错过了一些明显的东西.感谢您对此事的任何意见!

更新:我今天和Flyway的开发人员交谈,他告诉我他不会知道一个好的解决方案.也许什么都没有?

hibernate database-versioning

9
推荐指数
1
解决办法
3222
查看次数