加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

休眠 – Flyway或Liquibase可以生成更新脚本,而不是直接更新数据

发布时间:2020-12-12 16:46:32 所属栏目:MsSql教程 来源:网络整理
导读:首先,有一点背景.我有一套 Java应用程序,一些基于JPA,有些不是.要创建我的数据库,我正在使用Hibernates模式导出来为使用JPA的用户生成脚本.那些不使用JPA的人手动生成脚本.然后在使用ANT的应用程序安装期间运行这些.对于更新,应用程序安装程序只需将更新脚本
首先,有一点背景.我有一套 Java应用程序,一些基于JPA,有些不是.要创建我的数据库,我正在使用Hibernates模式导出来为使用JPA的用户生成脚本.那些不使用JPA的人手动生成脚本.然后在使用ANT的应用程序安装期间运行这些.对于更新,应用程序安装程序只需将更新脚本应用于数据库.

为了改进数据库更新的管理,我一直在看Flyway和Liquibase.两者似乎几乎都是做我想要的(除此之外,我喜欢现在的Flyway,因为我们拥有的所有预先存在的SQL / DDL脚本).我可以看到的问题是它们都直接更新数据库.这对于很多安装是不错的,但并不是全部.

我想做的是对数据库运行Flyway / Liquibase,并生成更新脚本,其中包含使数据库更新所需的所有更新,包括Flyway / Liquibase需要对其自己的表进行任何更改.这将允许我(或更重要的是数据库管理员)在应用程序之外运行更新脚本来更新数据库.我可以在我的应用程序中使用Flyway / Liquibase,仅仅是为了验证数据库是否是最新的.

有可能用Flyway或Liquibase或任何其他工具这样做吗?

解决方法

Liquibase处理很好.它在当前状态下查看数据库,查找未应用的更改集,并在 sql output mode中生成带有update命令的SQL脚本.

使用适当的数据库迁移工具而不是Hibernate生成器是无处不在的方式,迟早会遇到Hibernate不支持的情况.对我们来说,它正在丢弃一个独特的索引,并用另一个替换它.您还可以启用hibernate.hbm2ddl.auto = validate以确保数据库结构和实体bean之间的兼容性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读