Spring事务(一):Spring事务的使用

什么是事务

事务的经典举例:

某人要在商店使用电子货币购买100元的东西,当中至少包括两个操作:

  1. 该人账户减少100元
  2. 商店账户增加100元

事务就是要确保以上两个操作 都能完成 或者 一起取消,否则就会出现100元平白消失或出现的情况。

(摘自wiki

Spring事务的使用

Spring事务有两种方式:编程式事务管理、声明式事务管理

a. 编程式事务管理

调用getTransaction()、commit()、rollback()等事务管理相关的方法,可以进行代码块粒度的事务控制;但是对业务代码有侵入性。

b. 声明式事务管理

声明式事务采用AOP方式,业务代码无参杂事务代码。但是只能做到方法粒度

声明式事务有两种类型:1.基于 TransactionProxyFactoryBean 的声明式事务管理 , 2.基于注解 Transactional注解 的声明式事务管理

类型1,基于 TransactionProxyFactoryBean 的声明式事务管理:

  • 该方式需要在xml中配置 事务管理器DataSourceTransactionManager 和 事务代理类 TransactionProxyFactoryBean,使用不方便。

类型2,基于注解 Transactional注解 的声明式事务管理:

  1. 配置事务注解

  1. 使用事务注解

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

JPA多数据源分布式事务处理

前言多数据源的事务处理是个老生常谈的话题,跨两个数据源的事务管理也算是分布式事务的范畴,在同一个JVM里处理多数据源的事务,比较经典的处理方案是JTA(基于XA协议建模的java标准事务抽象)XA(XA事务协议),常见的JTA实现框架有Atomikos、Bitronix、Narayana,Spring对这些框架都有组件封装,基本可以做到开箱即用程

Spring3.1.0实现原理分析(二十一).Dao事务分析之集成MyBatis

    大家好,这篇博客我想分析下Spring是如何集成myBatis的,下篇博客分析集成后DataSourceTransactionManager事务管理的完整流程。spring集成mybatis,spring主要扮演了两个角色,原料供应商和事务管理者,第一个角色是必须扮演的,第二个角色可选,事务也可以由mybatis自己管理。为什么说第一个角色叫原

Spring声明式事务注解@Transactional

spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创