2012-08-27 53 views
5

我看着Controller.groovy源代碼,它看起來像CRUD操作不是事務性的(至少明確)。Grails腳手架是否以任何方式交易?

如果我是對的,這是否意味着動態腳手架不應該用於生產?有沒有辦法使它成爲事務性的(即我可以修改Controller.groovy或其他什麼?)?

回答

3

你是對的,腳手架不是事務性的。這可能是因爲grails和hibernate支持不支持事務的數據源,比如MySQL的MyISAM引擎。

你可以改變它是事務如下:

  1. 運行grails install-templates
  2. 編輯src/templates/scaffolding/Controller.groovy

Grails將使用這個模板generate-controller或每當它動態生成腳手架控制器。

+1

雖然這在技術上是正確的,但在控制器中進行事務工作並不是最佳實踐。所有的交易工作都應在服務中完成。輕輕地使用腳手架。不要把腳手架代碼投入生產。 – Gregg

+1

我不同意有腳手架存在任何固有的不好或不能生產的情況。通過使用腳手架(我不是假設開箱即用,而是進行了一些修改)。腳手架給你一個巨大的可維護性勝利,如果有的話,_Forces_你保持你的控制器精簡。 – cdeszaq

+0

服務層中的事務是一種最佳實踐,但我不會僅將CRUD操作移動到僅用於事務性的服務中。而且,腳手架是爲例如簡單的CRUD界面提供強大的方法。只需極少的代碼和精力即可管理,適用於廣泛的應用。 – ataylor