Spring 事务管理笔记
来源:互联网 发布:淘宝网手套 编辑:程序博客网 时间:2024/04/30 23:58
本文大部分是对Spring reference的翻译,属于读书笔记/摘要:
为什么要有Spring 事务管理,它的好处:
为所有不同的事务API提供一致的访问方式。
支持声明式事务管理。
简化编程式事务管理。
与Spring的数据访问抽象集成。
Spring事务抽象的关键式是事务策略。一个事务策略是由这个接口定义的:
org.springframework.transaction.PlatformTransactionManager
public interfacePlatformTransactionManager { TransactionStatusgetTransaction( TransactionDefinition definition)throws TransactionException; void commit(TransactionStatus status)throws TransactionException; void rollback(TransactionStatus status)throws TransactionException; }
TransactionException会被PlatformTransactionManager的每个方法抛出,它是一个unchecked Exception. 继承了java.lang.RuntimeException。
getTransaction(..)方法返回一个TransactionStatus对象。TransactionStatus对象可能代表了一个新的transaction,也可能是一个已有的transaction。TransactionStatus是跟一个线程的执行相关联的。
TransactionDefinition接口定义了以下内容:
Isolation:事务隔离度。一个事务对其他事务的隔离程度。比如它是不是允许对其他事务没有commit的数据。
Propagation:事务传播机制。一般情况下一个事务中的代码都会在本事务中执行,但是如果在执行这个方法之前已经有事务存在,你可以选择就在这个现有的事务中执行,也可以选择让当前事务挂起而创建一个新的事务执行你的代码。
Timeout:事务的超时时间。如果一个事务执行超过了设定的超时时间就会自动回滚。
Read-only status:当你的代码只做读操作时。只读事务对一些情况时很好的优化,比如Hibernate。
public interface TransactionStatus extends SavepointManager { boolean isNewTransaction(); boolean hasSavepoint(); void setRollbackOnly(); boolean isRollbackOnly(); void flush(); boolean isCompleted(); }
使用Spring的事务管理,第一步就是定义一个PlatformTransactionManager的实现,一般时用依赖注入的方式。
JDBC的实现:DataSourceTransactionManager
JTA的实现:JtaTransactionManager
Hibernate的实现LocalSessionFactoryBean
Rollbackrules使得用户可以指定在发生哪些Exception或者throwables的时候rollback。在发生unchecked exception时是自动rollback的。
@Transactional只有加在public的方法上才有作用。
@Transactional可以被加在interface上,interface的方法上,类定义上,类的公共方法上。
- Spring事务管理自学笔记
- Spring事务管理学习笔记
- spring 事务管理个人笔记
- Spring 事务管理笔记
- Spring学习笔记----事务管理
- Spring事务管理学习笔记
- Spring学习笔记 事务管理
- Spring 事务管理笔记
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- Spring 的事务管理学习笔记
- Spring实战笔记5---事务管理
- Spring 事务管理 随手笔记 心得
- Spring框架学习笔记----事务管理
- Spring 学习笔记之事务管理
- 【Spring学习笔记】Spring事务管理(一)
- spring学习笔记(4)-spring事务管理
- iOS开发装逼技能之语法糖
- 第一次打字测试
- leetcode-136. Single Number
- 练习三 1023
- JavaScript知识总结—cookie及其应用
- Spring 事务管理笔记
- 九、解释器设计模式
- 感悟
- JavaScript算法
- Eclipse中Maven管理的jar没有发布到WEB-INF/lib下的解决方案
- 共用数据保护(const 常量)
- hibernate反向生成奇葩错误
- leetcode-260. Single Number III
- hdu 5671 Matrix