《Spring技术内幕》学习笔记16——Spring具体事务处理器的实现
来源:互联网 发布:java面试宝典2017 编辑:程序博客网 时间:2024/05/01 11:52
1.Spring的事务处理中,通用的事务处理流程框架是由抽象事务管理器AbstractPlatformTransactionManager来提供的,而具体的底层事务处理实现,由PlatformTransactionManager的具体实现类来实现,如 DataSourceTransactionManager 、JtaTransactionManager和 HibernateTransactionManager等。我们以Spring中最常用的DataSourceTransactionManager和 HibernateTransactionManager为例,来分析具体事务处理器的底层实现事务创建、提交和回滚的处理操作。
2.AbstractPlatformTransactionManager抽象事物处理器:
上一篇博客中,我们已经分析了抽象事物管理器AbstractPlatformTransactionManager的源码,了解它实现了PlatformTransactionManager平台事务管理器接口,提供了一系列设计好的事务模板方法,如事务提交、回滚等,这些模板方法的具体实现由具体的事务处理器来提供。
3.DataSourceTransactionManager事务处理器的实现:
DataSourceTransactionManager数据源事务处理器是针对JDBC连接提供的事务处理器实现,即数据源事务处理器把数据库Connection连接和当前线程进行绑定,通过直接调用数据库连接Connection的提交和回滚方法实现事务的提供和回滚处理。其源码如下:
通过上述对数据源事务处理器的源码分析,我们看到,事务的提交、回滚等操作是通过直接调用数据库连接Connection的提交和回滚方法实现的,由于自动事务提交对应用程序性能影响很大,因此在进行事务提交时,我们首先禁止数据库连接的自动事务提交,事务提供操作通过手动实现。
4.HibernateTransactionManager事务处理器的实现:
相对于数据源的事务处理器来说,Hibernate的事务处理器相对要复杂一些,它是通过对Hibernate的会话Session的管理来完成事务处理实现的。Hibernate事务处理器的事务处理相关源码如下:
通过上面对Hibernate事务处理器的分析,我们看到真正执行提交、回滚等事务操作的还是Hibernate Transaction事务对象,这与单独直接使用Hibernate没有什么区别,只是Spring将其做了通用封装,更加方便使用。
- 《Spring技术内幕》学习笔记16——Spring具体事务处理器的实现
- 《Spring技术内幕》学习笔记16——Spring具体事务处理器的实现
- 《Spring技术内幕》学习笔记16——Spring具体事务处理器的实现
- 《Spring技术内幕》学习笔记——Spring具体事务处理器的实现
- spring技术内幕16-Spring具体事务处理器的实现
- Spring框架学习【Spring具体事务处理器的实现】
- Spring具体事务处理器的实现
- 《Spring技术内幕》学习笔记14——Spring读取和处理事务配置
- 《Spring技术内幕》学习笔记14——Spring读取和处理事务配置
- 《Spring技术内幕》学习笔记14——Spring读取和处理事务配置
- 《Spring技术内幕》学习笔记15——Spring事务处理的实现
- 《Spring技术内幕》学习笔记15——Spring事务处理的实现
- 《Spring技术内幕》学习笔记15——Spring事务处理的实现
- 《Spring技术内幕》学习笔记17——Spring HTTP调用器实现远程调用
- 《Spring技术内幕》学习笔记18——Spring使用Hessian实现远程调用
- 《Spring技术内幕》学习笔记19——Spring RMI实现远程调用
- 《Spring技术内幕》学习笔记18——Spring使用Hessian实现远程调用
- 《Spring技术内幕》学习笔记17——Spring HTTP调用器实现远程调用
- VS2005中CString与其他格式的转换 (UNICODE字符集带来的问题)
- 课程设计——AVL搜索树理论基础
- 有趣的DBA面试题
- 12 general questions from an international company
- Eclipse调试Bug的七种常用技巧(转)
- 《Spring技术内幕》学习笔记16——Spring具体事务处理器的实现
- 英文简历中关于项目经验的一些有用的例子
- 我要赚积分
- 防止硬盘恢复
- iframe必合写法不标准造成标签后面js alert不执行
- 人才市场之行的感想
- 百度之星
- 【转】如何用ildasm破解和用ilasm来重新编译
- 高中数列题目的C++实现