Spring JDBC与事务管理 一.Spring JDBC 1.Spring JDBC简介 2.Spring JDBC的使用步骤 3.Spring JDBC的配置过程 4. jdbcTemplate的数据查询的方法...5. jdbcTemplate的数据写入的方法 二.Spring编程式事务 三.Spring声明式事务 四.事务传播行为 五.注解配置声明式事务 本节,开始学习Spring JDBC模块与事务管理。...说起JDBC我们一定不陌生,JDBC可以让我们使用Java程序去访问数据库。那作为Spring生态体系,肯定对JDBC也有良好的支持。所以这一篇博客,着重讲解Spring JDBC 与事务管理。...二.Spring编程式事务 从本节开始,我们来了解一下Spring JDBC中如何进行事务管理。 编程式事务:编程式事务,就是指通过代码手动提交回滚的事务控制方法。...Spring JDBC通过TransactionManager事务管理器实现事务控制。事务管理器提供commit/rollback方法进行事务提交与回滚。
概述 事务管理关键抽象 Spring事务管理的实现类 Spring JDBC 和MybBatis的事务管理器的配置 JPA的事务管理器的配置 Hibernate的事务管理器的配置 JTA 的事务管理器的配置...也就是说,不管选择Spring JDBC、Hibernate 、JPA 还是iBatis,Spring都让我们可以用统一的编程模型进行事务管理。...Spring事务管理的亮点在于声明式事务管理,Spring允许通过声明的方式,在IoC配置中指定事务的边界和事务属性,Spring会自动在指定的事务边界上应用事务属性。...---- Spring事务管理的实现类 spring将事务管理委托底层具体的持久化实现框架去完成,因此针对不同的框架spring有的不同的接口实现类....下面介绍一下几个常见的事务管理器的配置 Spring JDBC 和MybBatis的事务管理器的配置 Spring JDBC 和MybBatis都是基于数据源的Connection访问数据库,所有都可以使用
---- 问题 当我们采用:ORM 技术框架+ 偏 JDBC 的底层技术如何应对事务管理的问题呢?...我们知道 Spring 为每种数据访问技术提供了相应的事务管理器,难道需要分别为它们配置对应的事务管理器吗?它们到底是如何协作,如何工作的呢?...---- 解决方案 Spring 事务管理的为我们的提供了解决方案。...---- 使用 Hibernate 事务管理器后,可以混合使用 Hibernate 和 Spring JDBC 数据访问技术,它们将工作于同一事务上下文中。...的 flush() 方法,以免覆盖 Spring JDBC 的更改,在 Spring JDBC 更改数据库时,维护 Hibernate 的缓存。
Spring通过各种模板类降低了开发者使用各种数据持久技术的难度,这些模板类都是线程安全的。...ThreadLocal在Spring中发挥着重要作用,在管理request作用域的Bean、事务管理、任务调度、AOP等模块中都出现了它的身影。...想要了解Spring事务管理的底层技术,必须要攻克ThreadLocal。...---- ThreadLocal的接口方法 ThreadLocal类接口很简单,只有4个方法, Java5.0中 ThreadLocal已经支持泛型 。...但这个实例基本上说明了Spring对有状态类线程安全化的解决思路。
JDBC的事务管理: 事务:一个事件的完成需要几个子操作的联合完成,只要有一个子操作执行失败,则数据回滚到原始状态,都成功则提交数据....JDBC的事务使用示例: package com.bjsxt.translation; import java.sql.Connection; import java.sql.DriverManager...; import java.sql.SQLException; import java.sql.Statement; JDBC的事务管理: 转账业务 示例: 张三给李四转账1000元....注意: JDBC中的事务是自动提交的. 问题: 如果在业务的处理过程中,某条Sql语句执行失败,但是数据已经被更改了....解决: 设置JDBC的事务为手动提交. sql语句都执行成功后再统一提交,只要有失败的就回滚.
概述 示例启动独立线程调用事务方法 结论 示例源码 概述 众所周知,Spring 的事务管理器是通过线程相关的 ThreadLocal 来保存数据访问基础设施,再结合 IOC 和 AOP 实现高级声明式事务的功能...,所以 Spring 的事务天然地和线程有着千丝万缕的联系。...由于 Spring 已经通过 ThreadLocal 将 Bean 无状态化,所以 Spring 中单实例 Bean 对线程安全问题拥有了一种天生的免疫能力。...* * @Description: 继承抽象基类MulitThreadBaseService * * @author: Mr.Yang * * @date: 2017年9月26日 下午4:...AnotherService#doAnotherThing()的线程 * * @author: Mr.Yang * * @date: 2017年9月26日 下午4:
前面讲解了基于JDBC驱动的Spring的持久化管理,本篇开始则着重介绍下与事务相关的操作。...通过本文你可以了解到: 1 Spring 事务管理的机制 2 基于JDBC持久化的事务管理 Spring的事务管理的机制 Spring本身并不提供事务管理,它只是把事务管理提交给事务管理器...,而事务管理器则有多种实现,常见的就是基于JDBC的、Hibernate的、JPA以及JTA的。 ...其实还有好多种类的事务管理器,这里就不一一列举了。 基于JDBC持久化的事务管理 基于JDBC的持久化,其实就是使用JDBC驱动,在利用spring模板的情况下实现的持久化。 ...参考 [1] Spring JDBC事务管理 [2] 《Spring in Action》
数据并发的问题 脏读dirty read 不可重复读unrepeatable read 幻象读 phantom read 幻象读和不可重复度的区别 第一类丢失更新 第二类丢失更新 数据库锁机制 事务隔离级别 JDBC...对事务的支持 概述 在使用Spring开发应用时,Spring的事务管理可能是被使用最多、应用最广的功能。...Spring不但提供了和底层事务源无关的事务抽象,还提供了声明性事务的功能,可以让开发者从事务代码中解放出来。 ---- 数据库事务的概念 “一荣俱荣,一损俱损”。...4、表共享行独占锁定:通过 LOCK TABLE IN SHARE ROW EXCLUSIVE MODE语句显示获得。...在JDBC3.0(Java1.4以及以后的版本)引入了保存点特性。 JDBC定义了SavePoint接口,提供在一个更细粒度的事务控制机制。
项目: http://www.cnblogs.com/hongten/archive/2012/03/09/java_spring_jdbc.html 只需修改: /spring_1100_spring...+jdbc/src/bean.xml 1 <?.../www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 4...2012-3-10 14:30:18 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 4...personService]; root of factory hierarchy 11 ++++++++得到所有Person 12 2 TomCat 12 女 13 3 hongten 21 男 14 4
1、Spring的事务管理主要包括3个接口 TransactionDefinition:封装事务的隔离级别,超时时间,是否为只读事务和事务的传播规则等事务属性,可通过XML配置具体信息。 ...,首先得告诉spring使用哪一个事务管理器; 3、常用的事务管理器: DataSourceTransactionManager:使用JDBC,MyBatis的事务管理器; HibernateTransactionManager...:使用Hibernate的事务管理器; 3、步骤 第一步:配置Spring的事务管理器(需要用的dataSource) 第二步:配置事务 事务管理器--> jdbc.datasource.DataSourceTransactionManager...method name="*" read-only="false"/> 第三步:进行事务的测试 4、
1 Spring事务简介【重点】 问题导入 Spring提供的事务管理是数据层的事务还是业务层的事务?...,也可以添加到接口上表示当前接口所有方法开启事务 【第二步】设置事务管理器(将事务管理器添加到IOC容器中) 说明:可以在JdbcConfig中配置事务管理器 //配置事务管理器,mybatis使用的是...MyBatis框架使用的是JDBC事务 【第三步】开启注解式事务驱动 @Configuration @ComponentScan("com.lfs") @PropertySource("classpath...public class SpringConfig { } 【第四步】运行测试类,查看结果 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration...2.1 Spring事务角色 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法 事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法 3 Spring事务相关配置
Spring事务管理 Spring是SSH中的管理员,负责管理其它框架,协调各个部分的工作。今天一起学习一下Spring的事务管理。Spring的事务管理分为声明式跟编程式。...声明式就是在Spring的配置文件中进行相关配置;编程式就是用注解的方式写到代码里。...下面先说声明式: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分...-- 配置事务管理器(声明式的事务) --> 事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager
事务的特性 原子性 一致性 3 事务的API Spring 接口介绍 PlatformTransactionManager TransactionDefinition 脏读 不可重复读 幻读 事务隔离级别...TransactionDefinition事务传播行为 TransactionStatus 4 环境搭建
事务的特性: 原子性:事务不可分割 一致性:事务执行前后数据完整性保持一致 隔离性:一个事务的执行不应该受到其他事务的干扰 持久性:一旦事务结束,数据就持久到数据库 Spring的事务管理分两类 编程式事务...--配置Spring的JDBC的模板--> 事务管理器--> jdbc.datasource.DataSourceTransactionManager...--配置Spring的JDBC的模板--> 事务管理器--> jdbc.datasource.DataSourceTransactionManager
,且大多是基于 JTA 完成(通常基于 JNDI 的,相当复杂的 API 实现) 4....容器事务:主要指的是 J2EE 应用服务器提供的事务管理,局限于 EJB 应用使用。 ---- 二、Spring 事务核心接口 ? Spring 事务管理器 1....JDBC 事务管理器(DataSourceTransactionManager) 本事务管理器是通过调用 java.sql.Connection 来管理事务。 2....4....平台事务管理器(PlatformTransactionManager) 案例 步骤: 获取事务管理器; 获取事务属性对象; 获取事务状态对象; 创建JDBC 模板对象 业务数据操作处理。
-- JDBC 操作模板 --> jdbc.core.JdbcTemplate">..." value="${jdbc.driver}"> jdbc.user}">事务管理器--> jdbc.datasource.DataSourceTransactionManager...spring7种传播行为: ? ?...事务管理: ?
背景 本节学习在 Spring 框架中使用事务。...Spring 的事务 3.1 Spring 事务管理的一组 API Spring 使用 PlatformTransactionManager 类来管理事务,根据不同的数据访问框架提供不同的实现,主要有下面这些...这三个类构成了 Spring 事务管理的主要内容,下面分别说明。...可根据不同的数据访问框架选择不同的具体 事务管理器实现。...JDBC 和 mybatis 时使用 JpaTransactionManager 使用 JPA 时使用 HibernateTransactionManager 使用 Hibernate 时使用 JtaTransactionManager
Spring事务管理分为声明式事务管理和编程式事务管理,声明式事务管理又分为xml和注解两种配置方式。应该优先选择声明式事务,因为声明式事务对程序代码的影响最小,因此最符合非侵入式轻量级容器的理想 。...只有在进行少量事务操作时,才应该选择编程式事务管理的方式。 声明式事务管理 xml配置方式 Spring配置文件: 事务管理器 --> jdbc.datasource.DataSourceTransactionManager...-- xml方式的配置声明式事务 end--> config.properties: jdbc_driverClassName=com.mysql.jdbc.Driver jdbc_url...-- 注释声明式事务管理配置 --> <!
Spring事务管理---上 编程式事务管理 使用PlatformTransactionManager进行编程式事务管理 使用TransactionTemplate进行编程式事务管理 编程创建基于SavePoint...回顾一下上面这张图: 通过Spring进行编程式事务管理有两种方式,要么直接使用PlatformTransactionManager,要么使用更方便的TransactionTemplate。...这个时候就可以借鉴一下Spring的JDBCTemplate的设计思想,使用模板方法模式加callBack相互结合的方式,对直接使用PlatformTransactionManager进行事务管理的代码封装...,这就有了更加方便的编程式事务管理方式,即使用TransactionTemplate的编程式事务管理。...Spring提供了用户声明事务管理的一切设施(org.springframework.transaction.interceptor.TransactionInterceptor),对于我们来说,所要做的只是决定使用
Spring事务管理---下 注解元数据驱动的声明式事务 tx:annotation-driven源码追踪 AnnotationDrivenBeanDefinitionParser负责解析tx命名空间下的...事务管理—中 Spring事务管理—上 Spring事务王国概览 ---- 前文,我们已经完成了对注解元数据驱动的声明式事务的模拟实现,并且详细分析了模拟实现的流程和原理,下面我将带领各位来看看Spring...真正的源码实现,让大家真正掌握Spring事务的精髓。...事务管理—上 ---- 重点类讲解 上面已经介绍完了两种自动开启事务支持方式的工作原理,下面来看看这其中最关键的几个没讲的类,至于已经讲过的拦截器等,这里不会再重复讲了。...publicMethodsOnly; if (jta12Present || ejb3Present) { this.annotationParsers = new LinkedHashSet(4)