Spring事务管理

Spring事务管理

概念介绍

事务的概念

事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败。

事务的特性

在这里插入图片描述
不应该出现张三的钱转出去了,李四的钱没收到的情况
在这里插入图片描述

事务的四大特性:

  • 原子性
    在这里插入图片描述
  • 一致性
    在这里插入图片描述
    不应该出现张三的钱转出去了,李四的钱没收到的情况
  • 隔离性
    在这里插入图片描述
  • 持久性
    在这里插入图片描述

事务的API介绍

接口介绍

Spring事务管理的一组API
Spring是通过提供接口来进行事务管理的,Spring事务管理高层抽象主要包括3个接口:
PlatformTransactionManager:平台事务管理器,主要是管理事务的。
在这里插入图片描述
三个接口直接的关系:Spring中DepaltformTransactionManager根据TransactionDefinition中设置的事务隔离级别和传播行为,来管理事务,将信息保存到TransactionStatus中。

PlatformTransactionManager接口介绍

Spring为不同的持久化框架提供了不同PlatformTransactionManager接口实现。
在这里插入图片描述

TransactionDefinition定义事务隔离级别

TransactionDefinition:事务定义信息(隔离、传播、超时、只读)。
隔离级别:目的是为了防止脏数据、不可重复数据以及幻读问题的。
在这里插入图片描述
注意:Spring中默认的隔离级别就是使用的底层数据库的隔离级别。Oracle中使用的是READ_COMMITED隔离级别,而MYSQL使用的是REPEATABLE_READ隔离级别。

TransactionDefinition定义事务传播行为

传播行为:解决业务层方法之间的相互调用的问题。
在这里插入图片描述
主要分为三组:前三个为一组,中间三个分为一组,后一个为一组。主要用到的是各个分组的第一个。

TransactionStatus接口介绍

获得、判断事务的状态

转账环境的搭建

转账环境的搭建

编程式事务管理,需手动编写代码,在需要用到事务的方法中编写代码(一般不使用)
声明式事务管理,应用配置xml方式来实现,Spring中使用AOP来实现的

CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `money` double DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `account` VALUES ('1', 'aaa', '1000');
INSERT INTO `account` VALUES ('2', 'bbb', '1000');
INSERT INTO `account` VALUES ('3', 'ccc', '1000');

编程式事务管理

编程式事务管理

实现的方式有三种:
方式一:基于TransactionProxyFactoryBean(一般不使用);
方式二:基于AspectJ(使用):不需要修改代码,只需添加配置文件信息
方式三:基于注解:在配置文件中开启事务启动,在调用事务的类中添加@Transactional

Spring的四种事务管理(一种编程式事务+三种声明事务)

SpringMVC+MyBatis 事务管理一

@Transactional注解事务不回滚不起作用无效

Spring事务异常回滚,try catch 捕获异常不回滚解决方法

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值