簡體   English   中英

如何在Grails中管理對象修訂?

[英]How to manage object revisions in Grails?

我需要在我的grails web app中為文章實現修訂系統。 搜索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 - 內置機制 Weceem為Weceem CMS的任何內容創建了版本控制系統。 我可以從代碼的邏輯和這個偉大的應用程序的設計中汲取靈感,但它似乎有點矯枉過正,我不喜歡使用非標准的解決方案。

所以我的問題是,你建議我做什么? 你有沒有使用過這些選項?

非常感謝您的見解。

由於在我提出問題后的幾天內沒有得到任何答案,我們已開始調查所有選項並得出以下結果/結論:

  1. Envers插件 :雖然Envers是使用Hibernate處理對象修訂和審計的成熟方法(正如Vadeg所指出的),但沒有這種現成的grails解決方案。 Envers插件非常無用,是一個永生不死的項目。 因此,使用帶有GORM的Envers仍然不可能直接使用但是我認為有一個Envers插件的空間(可能是grail 2.0的一部分?),因為Envers現在是Hibernate核心模塊不可或缺的一部分。 但是,我們沒有時間實施這樣的解決方案(當你有足夠的時間和資源時,這是迄今為止最好的解決方案)......所以我們放棄了它。

  2. Gvers插件 :令人驚訝的是,即使看起來沒有人在GRAILS世界中使用它(即使插件創建者的電子郵件無效!),這個插件也像魅力一樣工作。 看起來有風險,但如果你的要求很低(比如基本的版本控制系統),你應該選擇它。

  3. 內置系統 :除非您正在構建具有特定需求的CMS系統,或者相反,非常簡單,我不會在任何其他情況下使用它。 Weceem已經很好地實現了CMS內容修訂的大量示例,但即便如此,很遺憾他們不使用Envers。 沒有必要重新發明輪子......更好地改進現有的法拉利,不是嗎?

  4. VCS系統 :一位朋友建議我使用專為此類任務而構建的現有解決方案: 版本控制系統當然!! 實際上GIT似乎是完美的候選者:快速,可靠,無需任何處理的庫存。 實際上這是完美的解決方案。 我唯一的問題是:好吧,我不知道如何使用Git(甚至更少的API),而且我沒有時間。

底線

我肯定會使用Gvers但是如果你熟悉Git或者你對GORMHibernate感到滿意,那就去構建一個grail插件(基於GitEnvers

我在Hibernate的項目中使用了Envers,它工作正常。 GORM基於Hibernate,所以我覺得它沒有問題。

首先,您需要決定需要哪種版本控制? 您是否需要回滾對象圖更改或者需要查看某些字段? 有時候做一些小的本地實現而不是注入大型庫更好。

如果您需要修改對象圖,Envers是一個不錯的選擇。 如果你需要修改一個字段,DIY :)

盧卡斯沃德的插件有效。 確認Grails 1.3.7重要的是確保實體更新在事務中,因為envers依賴於它。 僅提醒Grails控制器默認不是事務性的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM