我最近开始在项目中使用Play2,并阅读evolutions上的部分。虽然如果我的项目有1个表,他们引用的例子似乎很好,但如果我在1.sql
中有10-20个表然后更改为2.sql
之间的更改,那么它似乎会非常混乱, 3.sql
等等。
在Ruby on Rails,Symfony和其他人中,您可以定义每个实体的上/下迁移。
我的问题是,在Play2中设置演进的最佳方法是什么?我应该在1.sql
中拥有所有表格,然后在2.sql
上对它们进行一些更改,依此类推吗?或者有没有办法为每个表分别有一个.sql
文件?
此外,是否有任何大型开源Play2项目的示例,我可以看到它的外观?
答案 0 :(得分:1)
实际上,Play不可能按实体划分进化。
恕我直言,这是相当的品味问题,你可以在单一的下一次演变中添加每个实体,无论如何只有差异将是进化的反对将更大,我认为这不会帮助你保持进化更清洁。
典型的工作流程从......良好的规划开始。只需创建一些模式的图形表示,并尝试根据需要添加任意数量的内容。它在项目启动时以及在后续开发步骤中都有很大帮助。
如果您要使用Ebean,请从您的图表中创建所有模型,并让插件创建自动的第一个演化文件,可能您将节省大量时间来编写关系,约束等的演变。花一些时间在进一步开发之前修复和检查初始模式。
之后,您需要禁用自动更新,因为它们删除整个数据库并从头开始重新创建表(在Ebean中没有差异模式更新)。
这也是品味的问题,但我更喜欢将几个变化结合到单个演变中(因此再次计划......),而不是为每个单独的变更创建下一个和下一个文件。