Spring 事务

前言

本篇内容示例基于Spring5。

主要内容

一、事务概念

二、事务特性

三、事务操作

展开说说

一、事务概念

事务是操作数据库最基本单元,逻辑上一组操作,要么都成功,要么都失败

典型场景:银行转账。

二、事务特性

1、原子性

2、一致性

3、隔离性

4、持久性

三、事务操作

1、搭建事务操作环境

①创建service :业务操作,创建转账的方法,调用dao对应的方法。

②创建dao:数据库操作,不写业务,创建两个方法。

③service注入dao,dao注入JdbcTemplate,JdbcTemplate注入DataSource

2、Spring事务管理介绍

(1)事务添加到JavaEE三层结构service层。(业务逻辑层)

2)用Spring进行事务管理操作,有两种方式:

 ①编程式事务管理

 ②声明式事务管理(使用)

(3)声明式事务管理(底层AOP原理

①基于注解方式

②基于XML配置方式

(4)Spring事务管理API

提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类。

3、注解声明式事务管理(重点

(1)在Spring配置文件中,配置事务管理器。

(2)在Spring配置文件中,开启事务注解。

(3)在service类上面,或者servicel类里面的方法上面,添加事务注解。

① @Transactional 可以添加到类上面,也可以添加到方法上面;

② 如果添加到类上面,就为这个类里面所有的方法都添加事务;

③ 如果添加到方法上面,就为这个方法添加事务;

(4)参数配置

①propagation :事务传播行为(当一个事务方法被另一个事务方法调用的时候,这个方法如何进行?)

②ioslation:事务隔离级别

问题描述:事务有特性称为隔离性,多事务操作之间不会产生影响,不考虑隔离性会有很多问题,其中有3个读问题:

脏读:一个未提交事务读取到了另一个未提交事务的数据;

不可重复读:一个未提交事务读取到了另一提交修改数据;

幻读:一个未提交事务读到了另一提交事务添加数据;

解决方案:通过设置事务隔离解决解决读问题。

READ UNCOMMITTED (读未提交):脏读,不可重复读,幻读;

READ COMMITTED(读已提交):幻读,不可重复读;

REPEATABLE (可重复读):幻读,MySQL默认隔离级别;

③timeout:超时时间

事务需要在一定时间内进行提交,如果不提交就进行回滚,默认值是-1(不超时),设置时间以秒为单位进行计算。

④readOnly:是否只读 (实际项目中经常使用)

读:查询操作

写:添加修改操作

readOnly 默认值为false,表示可以查询,也可以添加删除修改操作,设置readOnly值为true,只能查询。

⑤rollback:回滚

设置哪些异常进行事务回滚

⑥norollback : 不回滚

设置哪些异常不进行事务回滚

4、xml声明式事务管理

在Spring配置文件中进行配置

第一步:配置事务管理器

第二步:配置通知

第三步:配置切入点和切面

5、完全注解声明式事务管理

创建配置类,使用配置类替代xml配置文件

  • 21
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值