Sring事务管理

1、事务概念
2、Mysql事务处理
3、Jdbc事务处理
4、Spring事务 处理方式
5、项目中事务
6、总结

前置条件:
Jdbc
Spring ioc Spring aop
Mysql

数据库设计:
1、订单表
2、商品表
3、

事务:
概念:事务一般指的是数据库事务,指的是一个程序执行单元测试的一系列的操作(指的就是数据库中的增删改查操作),要么完全执行,要么完全不执行;

事务的特性:
原子性:一个事务是不可分割的工作单位;

一致性;事务必须是使得数据库从一个一致性状态变到另一个一致性状态;

隔离性;一个事务执行不能被其他事务干扰; 上锁;

持久性;一个事务一旦提交,他对数据库的改变就是永久的;

Mysql事务; 基本规则:
1、innodb :支持事务;
2、默认显示的是自动提交 aotocommit
(1)Begin 显示的开启一个事务;
(2)Commit 提交事务,并使已对数据库所有修改变为永久;
(3)Rollback 回滚事务,并撤销正在进行的的所有未提交的修改;

Mysql事务并发问题: 事务A 事务B
1、脏读 rollback session 会话独立
2、不可重复 a:100 b:0 commit a:0 锁定
3、幻读 (解决上有本质区别) a:0 b --1005 :100 commit a:100 整个商品表锁定

事务隔离级别: 脏读 不可重复读 幻读
读未提交(read-uncommitted) 是 是 是
读已提交(read-committed) 否 是 是
可重复读(repeatable-read) 否 否 是
串行化(serializable) 否 否 否

查看隔离级别:
Select @@tx_isolation 查看默认隔离级别的
Set session transaction isolation level xxx 设置隔离级别

jdbc事务处理;
Connection接口
1、jdbc事务处理基于Connection接口的,jdbc通过Connection对象进行事务管理
2、Jdbc默认是自动提交;

事务相关方法:
setAutoCommit设置自动提交 true false手动修改 – begin
Commit
Rollback

业务:添加生成订单功能的例子;
1、dao层持久化—增删改查;
2、业务:生成订单、库存减少等
3、总结:事务正常情况下封装在业务层的;

Jdbc事务隔离级别:
Transaction-read-uncommitted
Transaction-read-committed
Transaction-repeatable-read
Transaction-serializable

获取当前隔离级别 getTransactionIsolation
设置当前隔离级别 setTransactionIsolation

Spring事务的处理
API 接口

TransationDefinition接口:
ISOLATION-read-uncommitted
ISOLATION-read-committed
ISOLATION-repeatable-read MYSQL
ISOLATION-serializable

默认超时
Timeout_default(默认30秒)

Spring事务传播行为;

Propagation-requided 必须事务 是默认的也是最常用的事务
针对必须事务,2种情况:
第一种情况:

第二种:

Spring事务处理
两大类的处理方式:
1、编程式 代码行为 --基于底层API
(1)

(2)TransactionTemplate 简化事务编程的代码;
2、声明式(建议)
看下面;

Spring事务的处理: 4种方式;
1、基于拦截器的事务方式
transactionInterceptor
3、基于transactionProxyFactoryBean

4、基于tx命名空间的

5、基于@Transactional 注解方式

总结:
原子性
一致性
隔离性
持久性
事务传播行为

Api编程式
声明式 tx 注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值