至少有两个 Grails 插件可以模拟 Rails 的数据库迁移功能:
是否有关于其中哪个最好的共识,或者是否有另一个插件比上述任何一个都更好地进行数据库迁移?
现在有一个标准的 Grails 数据库迁移插件可用。根据这篇博文,至少在 liquibase 1.9 版本之后,liquibase 插件将不再被维护。
新的数据库迁移插件具有在启动时执行更改日志的内置功能,并支持在 Groovy DSL 中定义更改,因此它可能正是您想要的。
我使用 Autobase(构建在 Liquibase 之上),因为它(上次我检查)允许您在应用程序启动时自动检查/应用您的迁移。使用 Liquibase 插件,我必须自己在 servlet 初始化代码中执行此操作。这允许您将数据源设置为dbCreate = none
并让 Autobase 处理使 DB 成形。
这确实意味着每次向域类添加属性时都需要编写迁移,但我认为这是一件好事,因为它让你思考底层字段实际上应该是什么,而不是让 Hibernate 猜测它。
我认为一些 Autobase 插件(例如 groovy dsl)正在迁移回 Liquibase 插件,但您需要检查一下。
Autobase 唯一的缺点是缺乏好的文档。有一些,但不完整。幸运的是,dsl 与 xml Liquibase 标签相同,因此您可以解决大部分问题。
我使用 liquibase,我不确定 Robert 是否仍在积极维护 Autobase,并且 liquibase 提供的 xml 实际上非常类似于 DSL。我认为它还为您的数据库命令提供了一点分离,并且不会使其根深蒂固地进入启动过程(有些人可能更喜欢相反)。
至少从 Grails2.0 开始,数据库迁移插件是处理重要数据库更改的事实上的方式。该插件建立在 Liquibase 之上,由 Springsource 人员编写 - 始终是质量的标志。我写了一篇关于数据库迁移插件的介绍,可能对阅读本文的人有用。
是的,我也看到了迁移插件。这很有帮助... http://grails-plugins.github.io/grails-database-migration/
我听说 Autobase 仍在维护,但考虑到 Grails 数据库迁移插件是由核心团队编写的,并且可能会成为官方支持的插件。
换句话说,鼓励您在选择上述任一插件之前等待 Grails 1.4 -->路线图。