最佳实践:SQL脚本或信任GORM

时间:2010-01-26 17:25:39

标签: grails

我总是编写所有数据库更改的脚本。但我想知道我是否真的需要使用Grails应用程序,因为GORM会自动进行更改。

那么在Grails应用程序中管理数据库更改的最佳做法是什么?

2 个答案:

答案 0 :(得分:8)

这是我在几个大型Grails项目(以及一些较小的项目)上使用的模式:

  1. 在GORM,我们信任第一个™ 发展阶段 (预生产/没有数据)
  2. 就在释放之前 生产环境开始使用 像AutobaseLiquibaseDatabase Migration Tasks(类似于RoR的rake)或其他模式版本控制工具的工具。
  3. 维护所有数据库更改 通过自动化工具 方式。
  4. 通过将运行极端情况和数据完整性的测试编写到您在生产数据上运行它们的级别来测试迁移。
  5. 我不会在生产中使用直接GORM,除非它是一个较小的项目,可以处理一些可能的减速和手动干预。

    一旦开始管理多个环境(本地开发,QA / UAT,Staging,Production),您会很高兴您花时间管理数据库更改。

    Liquibase和Autobase都为您提供了一些编写许多常见重构的好工具,但如果您需要/可以,您可以随时下载到原始SQL中。

答案 1 :(得分:2)

GORM不会自动处理所有架构更改;例如,如果从某个域对象中删除字段,GORM将不会删除相应的数据库列。

有几个Grails插件可以管理数据库迁移 - 请参阅AutobaseLiquibase。我会说,使用这些中最符合您需求的是最佳实践;这是一个很好的blog post,用两个插件解释了一些问题。