休眠 – Flyway或Liquibase可以生成更新脚本,而不是直接更新数据
首先,有一点背景.我有一套
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之间的兼容性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |