OCTO 的英文Blog上最近发布了一 篇介绍Grails中事务的文章 ,非常好地对Grails中事务进行了总结。
<!--break-->
文章总结的要点摘录如下:
- 重点要记住:Grails不会自动把每个请求(与HTTP请求相关的处理)包装到事务中,因此可能不会像你想象的那样安全。
- 使用服务搭建公共业务逻辑并且 处理正确的事务行为。
- 总是使用注入(injection)调用服务
- 不要使用闭包定义服务方法
- 要是想回滚事务,使用RuntimeException
- 遵循Grails范式,将事务代码放到服务中去
- 总是把你的工作单元封装到顶级服务中,即不要在Controller的Action里调用2个服务。
- 信赖Hibernate Session,在Controller内封装简单逻辑,是没有问题的。前提是,不在 Controller里调用任何服务。
- 不要在事务性的服务之外加载对象,然后将它作为参数提供给服务。