我读到服务用于跨多个域类的更新。但是,我有命令类,并且我想知道将进行事务更新的逻辑放入命令类中是否有重大缺点(或破坏了Grails范例)。就像是:
class ObjectOneCommand {
...
def save() {
objectOneInstance.save()
objectTwoInstance.save()
}
}
并在 Controller 中
ObjectOne.withTransaction { transactionStatus ->
objectOneCommand.save()
}
最佳答案
我只是Grails的新手,但据我了解,命令对象基本上是对传入参数进行数据绑定(bind)的一种聪明方法,以便您可以进一步验证它们,或者对它们进行一些处理。本质上,它是从域类本身进行域模型约束检查并在将属性传递给域对象以进行持久化之前(通常是通过服务)对属性进行按摩。
因此,命令对象(无论如何对我来说)都不是域对象上交易业务逻辑的地方。
另外,由于可以将服务注入(inject)其他类,因此您可以通过这种方式在服务中重用业务逻辑。如果将逻辑放在命令对象中,则依赖注入(inject)不是您的选择,并且最终可能会在不同的命令对象之间复制逻辑。
因此,由于您可以将服务注入(inject)命令类,因此我认为走这条路线可能很有意义。
关于grails - 在Grails中使用命令对象进行更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5154832/