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