不使用Hibernate.hbm2ddl.auto,如何将所有初始模式导出到Flyway中



我正处于jee开发的几乎现成的阶段。有很多建议不要在生产中使用Hibernate的HBM2DDL.Auto,我决定将其删除。

所以,现在,我发现了有关Flyway的信息,这对于未来的DB变化和迁移似乎很棒,但是我陷入了第一步:我有许多实体,一些实体从基本实体中继承。这使得创建语句非常复杂。

创建第一个迁移文件的最佳实践是什么?

谢谢!

如果您在开发过程中采用了"实体"方法Flyway使用,也可能需要第二个关联的脚本来填充参考数据。

简而言之,第一次部署后不再能够使用hbm2ddl.auto的原因是create将销毁现有数据,而update不够可靠,无法涵盖所有类型的模式更改(因为听起来您可能已经已经已经已经已经已经已经存在了从这个问题中知道)。

Flyway是一个非常有用的工具,但确实需要在开发过程中可能不存在的纪律水平。从初始版本开始时,需要为Flyway制作数据库更新脚本,这些脚本等同于自上次版本以来对实体所做的更改。有一些工具(例如,来自Redgate的各种商业产品)可能会有所帮助:这些尝试"尝试"两个模式并生成模式和/或数据更新脚本以从数据库A到数据库B。但是,根据我的经验,没有一个很完美,它们并没有达到实现完全自动化的方法的圣杯。

可以说,最好的方法是一种"随身携带"手动方法,以确保每当进行实体更改会影响模式或参考数据时,都将无限期的更新脚本致力于来源控制 - 但是如前所述,此

将需要一些纪律和/或记录的过程。

对于第一个迁移文件,您只需要数据库的当前DDL即可。有许多工具可以为您提供此功能(例如Intellij Idea数据库工具中的"复制DDL"选项或数据库供应商的GUI客户端)。

我不确定Flyway,但是有一种替代方法,您可以使用Hibernate的ANT任务来生成或更新模式。

希望它有帮助。

如果使用Maven构建项目,则可以使用Hibernate Maven插件。

最新更新