为什么建议将 CRUD 代码放在服务中而不是控制器本身中?
问问题
370 次
2 回答
1
除了 soc、可重用性、可测试性等,我还可以看到以下更多技术原因:
默认情况下,Grails 服务中的每个方法都隐式地(或显式地用@Transactional
,参见 [0])包装在事务中。每当发生(未经检查的!)异常时,Spring 会自动回滚事务。
由于 CRUD 代码经常修改由多个域对象组成的聚合,因此建议(除了获得可重用性等)将此代码移动到“事务脚本”[1] 服务方法中,让 Grails/Spring 管理事务处理。
[0] http://grails.org/doc/latest/guide/services.html
[1] http://martinfowler.com/eaaCatalog/transactionScript.html
于 2012-11-05T08:28:24.217 回答
0
如果您的“CRUD 代码”表示应用程序逻辑。
Grails 鼓励在服务中编写应用程序逻辑,因为
1. 关注点分离
2. 可重用
于 2012-11-05T08:16:49.117 回答