`
blue2048
  • 浏览: 183661 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring事务深入剖析 - 事务框架和mybatis如何衔接的

阅读更多

spring将事务和底层数据库操作分离,产生两个问题

第一个问题,事务代码的抽离;

第二个问题,数据连接的统一;

前面分析了第一个问题,现在看看第二个问题。

JDBC,事务的是附着在Connection对象上的,Connection对象同事是insert,update,delete数据库操作的对象,事务和操作数据库的Connection必须是同一个,才能起作用

在spring事务框架中,我们看看是如何统一的。

 

首先在开启JDBC事务时,需要获得JDBC链接,可以看到获取newCon后,DataSourceTransactionManager将newCon以datasource为key,放入TransactionSynchronizationManager的ThreadLocal属性source中。

protected void doBegin(Object transaction, TransactionDefinition definition) {
    Connection newCon = this.dataSource.getConnection();
    txObject.setConnectionHolder(new ConnectionHolder(newCon), true);
    TransactionSynchronizationManager.bindResource(getDataSource(), txObject.getConnectionHolder());
}

 其次,底层操作数据库的代码,需要使用spring提供的DataSourceUtils获取,这样两层代码使用的数据库连接对象就是同一个了

public static Connection doGetConnection(DataSource dataSource) throws SQLException {
ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizationManager.getResource(dataSource);
		if (conHolder != null && (conHolder.hasConnection() || conHolder.isSynchronizedWithTransaction())) {
			conHolder.requested();
			if (!conHolder.hasConnection()) {
				logger.debug("Fetching resumed JDBC Connection from DataSource");
				conHolder.setConnection(dataSource.getConnection());
			}
			return conHolder.getConnection();
		}
}

 

分享到:
评论

相关推荐

    spring-mybatis-1.2.5-src.zip

    本篇将深入剖析"spring-mybatis-1.2.5-src.zip"中的源码,帮助读者理解这两个框架的整合机制及其工作原理。 1. **Spring的核心概念** - **依赖注入(Dependency Injection,DI)**:Spring通过DI来管理对象的创建...

    mybaits-spring(ibatis-spring)-1.0.2-bundle

    MyBatis-Spring是MyBatis和Spring框架的集成库,旨在简化在Spring应用中使用MyBatis的过程,实现两者的无缝连接。本篇文章将深入探讨MyBatis-Spring的核心功能,以及1.0.2版本的具体特性。 首先,我们要理解MyBatis...

    mybatis-spring-1.0.0-RC2-bundle.zip

    《MyBatis-Spring整合详解及1.0.0-RC2版本剖析》 MyBatis-Spring是一个轻量级的框架整合项目,它旨在简化MyBatis与Spring的集成,使得开发者能够在Spring环境中充分利用MyBatis的强大功能。在本文中,我们将深入...

    互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析

    《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》以SSM 的核心代码剖析为基础,突破Java Web 研发瓶颈的束缚,选取Spring、SpringMVC 和MyBatis 框架中易于理解的版本,深入剖析了其中各个...

    图灵Java高级互联网架构师第6期源码框架专题笔记.zip

    图灵Java高级互联网架构师第6期源码框架专题笔记,内容...16-SpringMVC源码 — 请求流程源码深入剖析-徐庶 17-SpringMVC源码—父子容器启动原理深入剖析-徐庶 18-MyBatis源码—体系介绍和配置文件解析源码剖析-徐庶 ...

    互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析 .rar

    SSM框架,全称为Spring、Spring MVC和MyBatis,是Java开发中广泛使用的轻量级Web应用框架组合。这三大框架各自承担着不同的职责,共同构建了一个高效、灵活的后端开发环境。本篇文章将深入探讨这三个核心组件,解析...

    spring源码合集spring源码合集

    本合集深入剖析了Spring的诸多关键特性,包括依赖注入、配置类解析、Bean生命周期管理、以及与MyBatis的整合等,旨在帮助读者构建起对Spring全面而深入的认识。 1. **依赖注入源码解析**:在"06-Spring之依赖注入...

    互联网轻量级 ssm 框架解密 springspringmvcmybatis源码深度剖析

    《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》以SSM 的核心代码剖析为基础,突破Java Web 研发瓶颈的束缚,选取Spring、SpringMVC 和MyBatis 框架中易于理解的版本,深入剖析了其中各个...

    spring-framework-3.0.5.RELEASE-dependencies

    本文将深入剖析Spring框架3.0.5.RELEASE的依赖结构,帮助开发者更好地理解和使用这个版本,特别是其在Spring和SpringMvc开发中的关键作用。 首先,"spring-framework-3.0.5.RELEASE-dependencies"这一标题表明了...

    基于springmvc+mybatis+spring+maven+mysql的网上租车系统

    本文将深入剖析一个基于SpringMVC、MyBatis、Spring、Maven以及MySQL构建的网上租车系统的实现原理和技术栈,旨在帮助读者理解如何运用这些技术来构建类似的Web应用。 首先,让我们了解这个系统的架构基础。...

    spring技术内幕2目录书签

    《Spring技术内幕》是一本深度剖析Spring框架内部工作机制的专业书籍,旨在帮助读者深入理解Spring的工作原理,提升在实际开发中的应用水平。书签目录通常包含了书籍的主要章节和内容概述,对于学习者来说,是一个...

    Spring+SpringMVC+Mybatis资源课件

    “3.1 Spring框架.pptx”和“3.2 Spring应用 .pptx”则可能详细讲解了Spring框架的核心组件和实际应用场景,比如AOP在事务管理中的应用,以及Spring与其他技术(如JDBC、Hibernate)的集成。 总体来说,这个资源包...

    官方源码 spring-framework-5.2.15.RELEASE.zip

    本文将对这个版本的源码进行深入剖析,帮助读者理解其核心机制和设计思想。 1. **模块架构** Spring Framework 5.2.15.RELEASE由多个模块组成,包括Core Container(核心容器)、Data Access/Integration(数据...

    spring-analysis-master.zip

    四、Spring事务管理 1. 编程式事务管理:通过PlatformTransactionManager接口进行事务管理,适用于手动控制事务的场景。 2. 声明式事务管理:基于AOP,通过@Transactional注解实现事务的自动管理,简化了事务处理...

    spring2.0技术手册--林信良

    《Spring 2.0 技术手册》是继 Spring 1.0 之后的重要著作,作者林信良针对 Spring 框架在 2.0 版本中的新特性进行了深入剖析与讲解。本书不仅适合于已经有一定 Java 开发基础的学习者,也适用于想要深入了解 Spring ...

    互联网轻量级SSM框架解密 Spring,MVC,Mybatis

    《互联网轻量级SSM框架解密:Spring、MVC、Mybatis源码深度剖析》 在当前的Java开发领域,Spring、Spring MVC和Mybatis是广泛应用的轻量级框架,构成了SSM(Spring、SpringMVC、Mybatis)集成框架,为开发者提供了...

    spring-spring-framework-4.3.24.RELEASE.zip

    《深入剖析Spring 4.3.24源码》 Spring框架是Java开发中的核心库,它为构建高质量的应用提供了全面的解决方案。Spring 4.3.24.RELEASE是该框架的一个稳定版本,它包含了丰富的功能和优化,旨在提高开发效率和应用的...

    官方原版源码spring-framework-5.1.8.RELEASE.zip

    《Spring Framework 5.1.8源码深度解析》 Spring Framework是Java开发中的核心框架,它为构建高质量的企业级应用提供...对于想要深入了解Spring框架的人来说,官方源码是一个宝贵的资源库,值得投入时间和精力去探索。

    spring-framework-4.3.2.RELEASE.zip

    《深入剖析Spring Framework 4.3.2.RELEASE》 Spring Framework是Java开发中的一个核心框架,它为构建企业级应用提供了全面的解决方案。本文将深入探讨Spring 4.3.2.RELEASE版本的关键特性、设计理念及其源码解析,...

    spring-framework-3.2.x-for-eclipse.rar

    《深入剖析Spring Framework 3.2.x:Eclipse开发环境搭建与源码探索》 Spring Framework作为Java领域中最重要的轻量级框架之一,其3.2.x版本在当时具有广泛的影响力。本文将针对《spring-framework-3.2.x-for-...

Global site tag (gtag.js) - Google Analytics