database - 玩耍、 hibernate 和进化

标签 database hibernate jpa playframework

我以前没有使用 Liquibase 等工具的经验。到目前为止,我通常使用 Hibernate 在应用程序上管理部署到生产中的方式是使用手动 SQL 来修改表,因为它们是非常简单的应用程序(复杂的应用程序没有使用它......请不要问: P).

我想在 Play 中使用 Evolutions,但我发现它在开发中与 Hibernate 有很大的冲突,这使它成为一种痛苦而不是一个现实的选择。在开发中,Hibernate 可以轻松管理所有内容,因此没有必要使用 Evolutions,但我们希望保留结构(文件),以便更轻松地在生产模式下迁移应用程序。但由于冲突,它似乎不值得。

Liquibase 有一个 Play 模块,但自 Evolutions 发布以来它似乎已经停产(我想知道为什么,因为我相信它会与 Hibernate 一起工作)。

问题是:

  • 您如何管理生产中应用的数据库迁移?
  • 当您的模型在不同版本之间发生变化并且您必须部署到生产环境时,您通常使用什么程序/步骤?
  • 我们忽略了 Hibernate 的任何特定工具或功能,或者只是老忠实的 SQL Alter table 和类似工具?
  • 专注于 Play Framework,您如何管理它?

最佳答案

通常情况下,应用程序在其生命周期中有两个阶段 - 初始开发和后期制作“维护”。我的经验是,所有大型数据库更改通常都发生在第一阶段。通过依赖 Hibernate 让自己在这方面变得灵活,然后当您进入生产环境时,您可以进行模式转储,使用 Evolutions 将其滚动到生产环境,并从那里手动管理您的 DDL。

在第二个“阶段”(我是一个敏捷的人,我讨厌这个词 ;-)),模式更改通常也包括 DML,因为您必须计算新列的初始值,等等。此外,与模式更改相比,您通常会花更多的时间在编码上,因此整个手动体验变得不那么痛苦 :)。

(话虽如此 - 我希望 Evolutions 和 Play/Hibernate 之间有更好的集成,比如可以选择记录 Hibernate 吐出到 evolutions 目录的 DDL)

关于database - 玩耍、 hibernate 和进化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681445/

相关文章:

java - c3p0中的 'testConnectionOnCheckin'是什么意思?

hibernate - Oracle Synonyms 的 JPA/Hibernate LocalSessionFactory 映射

asp.net-mvc - ASP.MVC db Find(),但带有非主键参数

java - 多个持久性单元出现未知实体异常

java - 使用 RSA 8.5 的 Websphere 7.0 上的 JPA 2.0 问题

java - 搞乱 JPA 并收到错误创建用户 - 无法设置字段值

java - IllegalArgumentException : At least one JPA metamodel must be present

c# - 开始我的第一个商业应用程序?

MySQL - 需要使用 WHERE 子句选择 MIN 和 MAX,作为较大查询的一部分

database - 您如何正确地对 ColdFusion 执行时间进行基准测试?