Per*_*ega 13 database hibernate jpa playframework
我以前没有像Liquibase等类似工具的经验.到目前为止,我通常使用Hibernate在应用程序上部署生产的方式是使用手动SQL来修改表,因为它们是非常简单的应用程序(复杂的应用程序没有使用它...请不要问: P).
我想在Play中使用Evolutions,但我发现它在开发过程中与Hibernate发生了很大的冲突,这让它变得很痛苦而且不是一个现实的选择.在开发过程中,Hibernate很容易管理所有内容,因此没有必要使用Evolutions,但我们希望保留结构(文件),以便在生产模式下更轻松地迁移应用程序.但由于冲突,它似乎并不值得.
Liquibase有一个Play模块,但是自从Evolutions发布以来它似乎已经停止了(我想知道为什么,因为我相信它会对Hibernate产生影响).
问题是:
通常的情况是,应用程序在其生命周期中有两个阶段 - 初始开发和后期制作"维护".我的经验是,所有大型数据库更改通常都会在第一阶段发生.通过依赖Hibernate让自己变得灵活,然后当你去生产时,你会采用模式转储,使用Evolutions在生产中滚动它,并从那里手动管理你的DDL.
在第二个"阶段"(我是一个敏捷的人,我讨厌这个词;-)),模式更改通常也包括DML,因为你必须计算新列的初始值,等等.此外,您通常会花费更多时间在编码上而不是模式更改上,因此整个手动体验变得不那么痛苦了:).
(话虽如此 - 我喜欢Evolutions和Play/Hibernate之间更好的集成,比如可以选择记录Hibernate吐出到evolutions目录的DDL)
嗯,你问了一个很好的问题。我在 grails 上遇到了这个问题,所以我没有真正的解决方案,但有一些想法。我将从 Evolutions 与 Liquibase 的比较开始:
现在讨论一般问题。我认为你必须选择:
那么我的建议是什么?我会尝试以下方法:使用分布式版本控制系统(例如 bzr 或 git)进行开发。然后使用功能分支。功能分支始终使用休眠功能。在将内容合并到主干之前,创建 liquibase-script。这些脚本可以由 liquibase 通过一些手动定制来生成)。因此,您可以非常快速地开发一个功能,并且始终拥有强大的解决方案 2。但是请注意,这在伟大的项目中并不是经过验证的方法。我只在一个小项目上使用 Hibernate 和 Liquibase 测试了这个策略 - 它工作得很好。
所以如果能得到反馈就太好了。
归档时间: |
|
查看次数: |
2326 次 |
最近记录: |