当前位置: 首页 > 面试题库 >

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

公孙嘉禧
2023-03-14
问题内容

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

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

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

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

所以我的问题是,您建议我做什么?您是否曾经使用过这些选项中的任何一个?

非常感谢您的见解。


问题答案:

由于在提问后的几天里我没有得到任何答案,因此我们开始研究所有选项,并得出以下结果/结论:

  1. Envers插件 :尽管Envers是使用Hibernate处理对象修订和审核的一种行之有效的方法(如Vadeg所指出的),但没有针对Grails的现成的解决方案。Envers插件绝对是无用的,并且是一个从未诞生过的项目。因此,仍然无法直接将Envers与GORM结合使用,但我认为Envers插件(可能是grail 2.0的一部分)有空间,因为Envers现在已成为Hibernate核心模块的组成部分。但是,我们没有时间实施这样的解决方案(当您有足够的时间和资源之前,这是最好的解决方案)…因此我们放弃了它。

  2. Gvers插件 :令人惊讶的是,即使在GRAILS世界中似乎也没有人使用该插件(即使插件创建者的电子邮件无效!),它也仍然具有魅力。使用它似乎有风险,但是如果您的要求很低(例如基本的版本html" target="_blank">html" target="_blank">控制系统),则应该使用它。

  3. 内置系统 :除非您要构建具有非常特定需求的CMS系统,或者相反,这非常简单,否则在任何其他情况下我都不会这样做。Weceem的实现非常好,提供了许多有关CMS内容修订的示例,但是即使如此,可惜他们没有使用Envers。无需重新发明轮子……更好地改进现有的法拉利,不是吗?

  4. VCS系统 :一位朋友建议我使用专门为此类任务而构建的现有解决方案:当然是 版本控制系统 !实际上, GIT 似乎是最理想的选择:您可以使用快速,可靠,无alomst的存储库。实际上,这是完美的解决方案。我唯一的问题:恩,我不知道如何使用Git(甚至更不用说它的API),而且我也没有时间。

底线

我当然会使用 Gvers, 但是如果您熟悉 Git 或对 GORMHibernate 感到满意,请去构建一个
grail 插件(基于 GitEnvers



 类似资料:
  • 问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。

  • 问题内容: 我有很多自定义对象,需要对其执行独立(可并行化)的任务,包括修改对象参数。我试过同时使用Manager()。dict和’sharedmem’ory,但都没有用。例如: 打印出: 即对象没有被修改。 如何实现所需的行为? 问题答案: 问题在于,当将对象传递给工作进程时,它们会被泡菜包装,运送到另一个过程中,然后在其中解压缩并进行处理。您的对象没有像克隆的那样传递给其他过程。您不返回对象,

  • 这是一个更通用的Spring问题,不一定是Spring社交脸谱网的问题;然而,我在这里问这个问题,因为我不清楚Spring是如何管理传递到控制器构造函数的脸谱网引用的。 我在Spring boot应用程序1.5.3版中运行这个。释放 我在谷歌上搜索过,读过很多关于作用域代理如何工作以及控制器是否为单例等的内容;但是对于这个特定的用例,我仍然不清楚。我担心的是,两个或两个以上的同时请求是否会导致一个

  • 问题内容: 我需要有关为嵌套对象创建hibernate条件的帮助。例如 : 现在,我正在尝试从服务类(officeService)中提取与某个区域匹配的所有办事处,如下所示: 总是出现异常:“ org.hibernate.QueryException:无法解析属性:”我需要找出正确的方法来创建此查询的条件。有人可以帮忙吗? 问题答案: 请参阅用户指南的 “ 标准”部分下的“查询关联” :

  • 很多程序需要在某个事务中获取对象,然后将对象发送到界面层去操作,最后在一个新的事务保存所做的修改。在高并发访问的环境中使用这种方式,通常使用附带版本信息的数据来保证这些“长“工作单元之间的隔离。 Hibernate 通过提供 Session.update() 或 Session.merge() 重新关联脱管实例的办法来支持这种模型。 // in the first session Cat cat

  • 假设我有一个项集合,例如,我需要检查是否有任何项从包装类中被修改,例如,任何项的属性的值通过setter被更改: 或者另一个问题,选择的答案建议使用标记,每次修改属性时都需要升起该标记。然而,我的类实际上会变得更脏,矛盾的是,我需要修改几十个修改Item属性的方法。 有没有其他方法,最好是透明的?