hibernate - 如何在 Grails 中管理对象修订?

标签 hibernate grails versioning auditing hibernate-envers

我需要为我的 grails Web 应用程序中的文章实现修订系统。在搜索 grails 论坛、stackoverflow、grails 插件和谷歌搜索互联网后,我最终得到了 3 个选项:

选项 1 - 使用 grails Envers 插件(请参阅 http://code.google.com/p/grails-envers-plugin/ )。有人使用成功过吗?或者使用Envers没有插件(请参阅 here ),但如何使其与 GORM 一起使用?

选项 2 - 使用 Gvers 插件,我在这里找到了:https://github.com/ziftytodd/gvers 。我从来没有听说过有人用过它,所以有人成功地使用过它吗?

选项 3 - 内置机制Weceem 为 Weceem CMS 的任何内容创建了版本控制系统。我可以从这个伟大应用程序的代码逻辑和设计中汲取灵感,但这似乎有点矫枉过正,而且我真的不喜欢使用非标准解决方案。

所以我的问题是,你建议我做什么?您曾经使用过这些选项吗?

非常感谢您的见解。

最佳答案

由于我在提出问题后的几天内没有得到任何答案,我们已开始调查所有选项并得出以下结果/结论:

  1. Envers 插件:虽然 Envers 是一种使用 Hibernate 处理对象修订和审核的成熟方法(正如 Vadeg 所指出的),但没有这样的特殊方法。 grails 的架子解决方案。 Envers 插件完全没用,是一个永远不会诞生的项目。因此,直接将 Envers 与 GORM 结合使用仍然是不可能的,但我相信 Envers 插件有空间(可能是 grail 2.0 的一部分?),因为 Envers 现在是 Hibernate 核心模块不可或缺的一部分。但是,我们没有时间实现这样的解决方案(当您有足够的时间和资源时,这是迄今为止最好的解决方案)...所以我们放弃了它。

  2. Gvers 插件:令人惊讶的是,即使在 GRAILS 世界中似乎没有人使用它(甚至是拥有无效电子邮件的插件创建者!),这个插件仍然像魅力一样工作! )。使用它似乎有风险,但如果您的要求较低(例如基本版本控制系统),您应该使用它..

  3. 内置系统:除非您正在构建具有非常特定需求的 CMS 系统,或者相反非常简单的系统,否则我不会在任何其他情况下使用它。 Weceem 的实现非常好,有大量 CMS 内容修订的示例,但即使如此,遗憾的是他们没有使用 Envers。无需重新发明轮子...更好地改进现有的法拉利,不是吗?

  4. VCS 系统:一位 friend 建议我使用专为此类任务构建的现有解决方案:当然是版本控制系统!其实GIT 似乎是完美的候选者:快速、可靠、几乎免费的存储库可供您使用。实际上这是完美的解决方案。我唯一的问题是:嗯,我不知道如何使用 Git(更不知道它的 API),而且我也没有时间。

底线

我肯定会使用 Gvers,但如果您熟悉 Git 或者您对 GORMHibernate 感到满意的话strong>,去构建一个 grail 插件(基于 GitEnvers)

关于hibernate - 如何在 Grails 中管理对象修订?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3564936/

相关文章:

mysql - 与Hibernate的Pool和Mysql冲突?

mysql - Hibernate独有的两列

Android 应用版本控制设置初始版本号

go - 转到-“版本”包及其工作方式?

sql - 在 Postgres 中更改列类型会导致 pg_attrdef 警告

java - Webapp 中的默认数据?

grails - grails枚举类型验证未按预期工作

sql - 带有限制的 Grails executeUpdate 不适用于删除

json - 从 Groovy 中的 URL 解析 JSON 对象

git - 我什么时候应该创建一个新分支?