2013-06-24 23 views
1

我最近开始在项目中使用Play2,并阅读evolutions上的部分。虽然他们引用的例子看起来很好,但如果我的项目有1个表格,那么如果我在1.sql中有10-20个表格,然后将它们更改为2.sql,3.sql等等,就会非常混乱。如何缩放Play2演变

在Ruby on Rails,Symfony和其他平台上,您可以定义每个实体的向上/向下迁移。

我的问题是,在Play2中设置您的演变的最佳方式是什么?我是否应该在1.sql中拥有所有表格,然后通过2.sql等对它们进行小改动?或者有没有办法为每个表单独使用.sql文件?

另外,是否有任何大型的开源Play2项目的例子,我可以看到它看起来如何?

回答

1

实际上玩并不可能按实体划分进化。我不认为这会帮助你保持演化的更清洁。我相信你的意思是,你可以将每个实体添加到单一的下一个进化中,不管怎样,唯一的区别是进化的反作用力会更大,我认为这不会帮助你保持更好的进化。

典型的工作流程始于......良好的规划。只需创建一个图表表示您的模式的图形,并尝试添加尽可能多的东西,你需要。它在项目启动时以及下一步的开发过程中提供了很多帮助。

如果您要使用Ebean,请创建您的图形中的所有模型,并让插件创建自动的第一个演化文件,可能您会为关系,约束等的演化节省大量时间。花一些时间在进一步开发之前修复和检查初始模式。

之后,你需要禁用自动更新,因为他们下降整个数据库,并从零开始重新创建表格(Ebean中没有差异模式更新)。

这也是品味的问题,但我更倾向于将几个变化合并为单个演变(所以再次计划...),而不是为每个单独更改创建下一个和下一个文件。