0

为什么建议将 CRUD 代码放在服务中而不是控制器本身中?

4

2 回答 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 回答