小编典典

Flyway或Liquibase可以生成更新脚本而不是直接更新数据库吗?

hibernate

首先,有一点背景。我有一套Java应用程序,有些基于JPA,有些则没有。为了创建数据库,我目前正在使用Hibernates模式导出来为使用JPA的用户生成创建脚本。那些不使用JPA的人会手工生成脚本。然后使用ANT在应用程序安装过程中运行它们。对于更新,应用程序安装程序只需将更新脚本应用于数据库。

为了改善数据库更新的管理,我一直在研究Flyway和Liquibase。两者似乎几乎都可以满足我的要求(此外:由于我们拥有的所有预先存在的SQL /
DDL脚本,目前我更喜欢Flyway)。我可以看到的问题是它们都直接更新数据库。这对于很多安装都很好,但不是全部。

我想做的是针对数据库运行Flyway / Liquibase,并生成一个更新脚本,其中包含使数据库保持最新状态所需的所有更新-包括Flyway /
Liquibase需要对其自己的表进行的任何更改。这将允许我(或更重要的是数据库管理员)在应用程序外部运行更新脚本以更新数据库。然后,我可以在应用程序中纯粹使用Flyway
/ Liquibase来验证数据库是否最新。

是否可以使用Flyway或Liquibase或任何其他工具来做到这一点?


阅读 410

收藏
2020-06-20

共1个答案

小编典典

Liquibase处理得很好。它以当前状态查看数据库,查找未应用的变更集,并updatesql输出模式下使用命令生成SQL脚本。

无论如何,使用适当的数据库迁移工具代替Hibernate
generator是最好的选择,迟早您会遇到Hibernate不支持的情况。对我们来说,它正在删除一个唯一索引,并用另一个索引代替它。您还可以使hibernate.hbm2ddl.auto=validate自己对数据库结构和实体Bean之间的兼容性感到放心。

2020-06-20