【发布时间】:2011-04-08 21:39:22
【问题描述】:
随着我越来越多地使用 Grails,我发现自己在多个控制器中编写代码,看起来它确实应该是域类的一部分。有时,此域代码包含对服务类的调用。例如,我最近写了一个类似这样的域方法:
class Purchase {
// Injected
def paymentService
String captureTransactionId
Boolean captured
// ...
def capture() {
captureTransactionId = paymentService.capturePurchase( this )
captured = captureTransactionId != null
}
我不觉得写这段代码很脏,但我还没有研究过 Grails 中的最佳设计实践,所以我想听听一些意见。
【问题讨论】:
-
迟来的评论:什么时候注入服务?例如,如果您从数据库加载 10,000 个购买,paymentService 会被注入其中吗?性能将受到严重影响。
-
@User277434 - Hibernate 并不是真的要进行这种类型的批量加载。如果我要一次加载这么多记录,我可能会跳过使用休眠,或者使用带有投影的查询来避免创建对象。
标签: grails