Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数据库版本控制系统_Java_Hibernate_Spring Boot_Liquibase_Flyway - Fatal编程技术网

Java 数据库版本控制系统

Java 数据库版本控制系统,java,hibernate,spring-boot,liquibase,flyway,Java,Hibernate,Spring Boot,Liquibase,Flyway,我们有一个使用spring引导和hibernate的java应用程序 实体和字段上有许多更改。这就是为什么,我想遵循更改和回滚机制。所以,我需要一个数据库版本控制系统。我查看了flyway和liquibase,但我认为这些并不能解决我的问题。因为我的表创建和更新是由hibernate处理的 是否有任何方法可以查看hibernate执行哪些查询来更改数据库,以及自最近的数据库更改(我指的是新表、列创建或重构)以来发生了哪些更改?使用这些工具,因为它们专门用于此目的。就个人而言,我更喜欢液化,但这是

我们有一个使用spring引导和hibernate的java应用程序


实体和字段上有许多更改。这就是为什么,我想遵循更改和回滚机制。所以,我需要一个数据库版本控制系统。我查看了flyway和liquibase,但我认为这些并不能解决我的问题。因为我的表创建和更新是由hibernate处理的


是否有任何方法可以查看hibernate执行哪些查询来更改数据库,以及自最近的数据库更改(我指的是新表、列创建或重构)以来发生了哪些更改?

使用这些工具,因为它们专门用于此目的。就个人而言,我更喜欢液化,但这是你的选择

Hibernate的模式创建机制不应在生产中使用,因为这样,实体的Java描述将驱动表的创建,从而导致结构效率低下。
该功能仅用于测试目的。

使用专用于此目的的工具。就个人而言,我更喜欢液化,但这是你的选择

Hibernate的模式创建机制不应在生产中使用,因为这样,实体的Java描述将驱动表的创建,从而导致结构效率低下。 该功能仅用于测试目的。

一种方法(我们是如何做到的):

使用2个数据库。一个参考数据库和一个开发数据库。 在开发数据库上,使用hibernate创建结构

开发周期结束后,在参考数据库上运行liquibase
diffChangelog
。它将创建一个changelog.xml,其中包含hibernate在开发数据库上所做的所有更改。手动更正(名称等)。 当您对变更日志文件和开发周期满意时,将变更日志应用到参考数据库

开始下一个开发周期并重复

通过这种方式,您可以结合让hibernate生成模式的优点,并且仍然使用liquibase来拥有可重新创建的版本化DB模式

一种方法(我们如何做):

使用2个数据库。一个参考数据库和一个开发数据库。 在开发数据库上,使用hibernate创建结构

开发周期结束后,在参考数据库上运行liquibase
diffChangelog
。它将创建一个changelog.xml,其中包含hibernate在开发数据库上所做的所有更改。手动更正(名称等)。 当您对变更日志文件和开发周期满意时,将变更日志应用到参考数据库

开始下一个开发周期并重复


通过这种方式,您可以结合让hibernate生成模式的优点,并且仍然使用liquibase来拥有可重新创建的版本化DB模式

“因为我的表创建和更新是由hibernate处理的。”这是你的错误。停止让Hibernate更改您的模式,开始通过Flyway或Liquibase手动管理它。“因为我的表创建和更新由Hibernate处理。”这是您的错误。停止让Hibernate更改您的架构,并开始通过Flyway或Liquibase手动管理它。我可以使用diffChangeLog以--diffTypes=data参数获取表行内容吗@JensCan我使用diffChangeLog获取带有--diffTypes=data参数的表行内容@延斯