显然最好将事务代码放在Grails服务中,原因有很多。但是,Domain类交易是否像服务一样?
在域类中为域特定字段设置数据绑定似乎很直观,甚至使用一些Groovy约定来使Grails绑定工作更加无缝(例如替换setSomeField(类型A)setSomeField(类型B) )...)。我也一直在尝试按照Burt Beckwith的建议手动处理域模型关系,以提高性能并使代码更加灵活。这需要在setSomeField(...)调用上更新并保存其他域类实例。
这就是我正在做的事情的背景,但最初的问题是:域类与Grails服务具有相同的事务行为吗?如果没有,我应该在withTransaction {}或使用@Transactional或仅使用服务包装交易吗?
答案 0 :(得分:3)
不,默认情况下,域类的方法不是事务性的。您可以将@Transactional
应用于它们,或者在更高级别的事务上下文中运行它们,例如服务。