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"中的源码,帮助读者理解这两个框架的整合机制及其工作原理。 1. **Spring的核心概念** - **依赖注入(Dependency Injection,DI)**:Spring通过DI来管理对象的创建...
MyBatis-Spring是MyBatis和Spring框架的集成库,旨在简化在Spring应用中使用MyBatis的过程,实现两者的无缝连接。本篇文章将深入探讨MyBatis-Spring的核心功能,以及1.0.2版本的具体特性。 首先,我们要理解MyBatis...
《MyBatis-Spring整合详解及1.0.0-RC2版本剖析》 MyBatis-Spring是一个轻量级的框架整合项目,它旨在简化MyBatis与Spring的集成,使得开发者能够在Spring环境中充分利用MyBatis的强大功能。在本文中,我们将深入...
《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》以SSM 的核心代码剖析为基础,突破Java Web 研发瓶颈的束缚,选取Spring、SpringMVC 和MyBatis 框架中易于理解的版本,深入剖析了其中各个...
图灵Java高级互联网架构师第6期源码框架专题笔记,内容...16-SpringMVC源码 — 请求流程源码深入剖析-徐庶 17-SpringMVC源码—父子容器启动原理深入剖析-徐庶 18-MyBatis源码—体系介绍和配置文件解析源码剖析-徐庶 ...
SSM框架,全称为Spring、Spring MVC和MyBatis,是Java开发中广泛使用的轻量级Web应用框架组合。这三大框架各自承担着不同的职责,共同构建了一个高效、灵活的后端开发环境。本篇文章将深入探讨这三个核心组件,解析...
本合集深入剖析了Spring的诸多关键特性,包括依赖注入、配置类解析、Bean生命周期管理、以及与MyBatis的整合等,旨在帮助读者构建起对Spring全面而深入的认识。 1. **依赖注入源码解析**:在"06-Spring之依赖注入...
《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》以SSM 的核心代码剖析为基础,突破Java Web 研发瓶颈的束缚,选取Spring、SpringMVC 和MyBatis 框架中易于理解的版本,深入剖析了其中各个...
本文将深入剖析Spring框架3.0.5.RELEASE的依赖结构,帮助开发者更好地理解和使用这个版本,特别是其在Spring和SpringMvc开发中的关键作用。 首先,"spring-framework-3.0.5.RELEASE-dependencies"这一标题表明了...
本文将深入剖析一个基于SpringMVC、MyBatis、Spring、Maven以及MySQL构建的网上租车系统的实现原理和技术栈,旨在帮助读者理解如何运用这些技术来构建类似的Web应用。 首先,让我们了解这个系统的架构基础。...
《Spring技术内幕》是一本深度剖析Spring框架内部工作机制的专业书籍,旨在帮助读者深入理解Spring的工作原理,提升在实际开发中的应用水平。书签目录通常包含了书籍的主要章节和内容概述,对于学习者来说,是一个...
“3.1 Spring框架.pptx”和“3.2 Spring应用 .pptx”则可能详细讲解了Spring框架的核心组件和实际应用场景,比如AOP在事务管理中的应用,以及Spring与其他技术(如JDBC、Hibernate)的集成。 总体来说,这个资源包...
本文将对这个版本的源码进行深入剖析,帮助读者理解其核心机制和设计思想。 1. **模块架构** Spring Framework 5.2.15.RELEASE由多个模块组成,包括Core Container(核心容器)、Data Access/Integration(数据...
四、Spring事务管理 1. 编程式事务管理:通过PlatformTransactionManager接口进行事务管理,适用于手动控制事务的场景。 2. 声明式事务管理:基于AOP,通过@Transactional注解实现事务的自动管理,简化了事务处理...
《Spring 2.0 技术手册》是继 Spring 1.0 之后的重要著作,作者林信良针对 Spring 框架在 2.0 版本中的新特性进行了深入剖析与讲解。本书不仅适合于已经有一定 Java 开发基础的学习者,也适用于想要深入了解 Spring ...
《互联网轻量级SSM框架解密:Spring、MVC、Mybatis源码深度剖析》 在当前的Java开发领域,Spring、Spring MVC和Mybatis是广泛应用的轻量级框架,构成了SSM(Spring、SpringMVC、Mybatis)集成框架,为开发者提供了...
《深入剖析Spring 4.3.24源码》 Spring框架是Java开发中的核心库,它为构建高质量的应用提供了全面的解决方案。Spring 4.3.24.RELEASE是该框架的一个稳定版本,它包含了丰富的功能和优化,旨在提高开发效率和应用的...
《Spring Framework 5.1.8源码深度解析》 Spring Framework是Java开发中的核心框架,它为构建高质量的企业级应用提供...对于想要深入了解Spring框架的人来说,官方源码是一个宝贵的资源库,值得投入时间和精力去探索。
《深入剖析Spring Framework 4.3.2.RELEASE》 Spring Framework是Java开发中的一个核心框架,它为构建企业级应用提供了全面的解决方案。本文将深入探讨Spring 4.3.2.RELEASE版本的关键特性、设计理念及其源码解析,...
《深入剖析Spring Framework 3.2.x:Eclipse开发环境搭建与源码探索》 Spring Framework作为Java领域中最重要的轻量级框架之一,其3.2.x版本在当时具有广泛的影响力。本文将针对《spring-framework-3.2.x-for-...