如何扩展Play2进化

时间:2013-06-24 03:40:08

标签: sql scala playframework-2.0 playframework-evolutions

我最近开始在项目中使用Play2,并阅读evolutions上的部分。虽然如果我的项目有1个表,他们引用的例子似乎很好,但如果我在1.sql中有10-20个表然后更改为2.sql之间的更改,那么它似乎会非常混乱, 3.sql等等。

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

我的问题是,在Play2中设置演进的最佳方法是什么?我应该在1.sql中拥有所有表格,然后在2.sql上对它们进行一些更改,依此类推吗?或者有没有办法为每个表分别有一个.sql文件?

此外,是否有任何大型开源Play2项目的示例,我可以看到它的外观?

1 个答案:

答案 0 :(得分:1)

实际上,Play不可能按实体划分进化。

恕我直言,这是相当的品味问题,你可以在单一的下一次演变中添加每个实体,无论如何只有差异将是进化的反对将更大,我认为这不会帮助你保持进化更清洁。

典型的工作流程从......良好的规划开始。只需创建一些模式的图形表示,并尝试根据需要添加任意数量的内容。它在项目启动时以及在后续开发步骤中都有很大帮助。

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

之后,您需要禁用自动更新,因为它们删除整个数据库并从头开始重新创建表(在Ebean中没有差异模式更新)。

这也是品味的问题,但我更喜欢将几个变化结合到单个演变中(因此再次计划......),而不是为每个单独的变更创建下一个和下一个文件。