首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

spring学习札记:spring事务管理 (转:http://blog.csdn.net/sunxing007/article/details/457922)

2013-07-08 
spring学习笔记:spring事务管理 (转:http://blog.csdn.net/sunxing007/article/details/457922)嵌套事务开

spring学习笔记:spring事务管理 (转:http://blog.csdn.net/sunxing007/article/details/457922)
嵌套事务开始执行时,? 它将取得一个 savepoint. 如果这个嵌套事务失败, 嵌套事务将回滚到此 savepoint.? 外部事务可通过配置或捕获内部事务抛出的Exception来决定是回滚还是继续往下执行. 潜套事务是外部事务的一部分, 只有外部事务结束后它才会被提交, 外部事务回滚则内部事务也会回滚, 不管内部事务有没有提交.

关于PROPAGATION_NESTED和PROPAGATION_REQUIRED_NEW, 有一篇好文章, 我转载过来,防止原文被删除:http://zhangjq5.iteye.com/admin/blogs/1893305

使用spring声明式的事务管理:
大多数情况下,事务会放在services层,spring声明式的事务管理中,需要做以下的工作:
1 把dao,service注入到spring容器(这些dao, service不涉及事务);
2 需要注入一个transactionManager(它需要dataSource);
3 通过TransactionProxyFactoryBean为目标对象(需要事务的dao, service等等)提供事务增强,产生增强后的代理对象.
看代码:
先添加一个CompanyService,


测试:

?

虽然我们为需要事务增强的bean配置了代理类,但是难保用户还会直接使用目标对象companyServiceTarget; 可以使用拦截器.

spring事务管理第三种配置方式:使用拦截器

?

使用tx命名空间还能对业务方法做更加细致的事务配置, 下面的表格摘自spring docs, 是一些可配置的参数列表和默认值:

AttributeRequired?DefaultDescription

?

spring事务管理第五种配置方式:注解

略...