spring事务

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

前置条件:
Jdbc
Spring ioc Spring aop
Mysql

数据库设计:
订单表
商品表

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

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

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

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

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

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

Mysql事务并发问题: 事务A 事务B
脏读 rollback session 会话独立
不可重复 a:100 b:0 commit a:0 锁定
幻读 (解决上有本质区别) 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接口
jdbc事务处理基于Connection接口的,jdbc通过Connection对象进行事务管理
Jdbc默认是自动提交;

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

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

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事务处理
两大类的处理方式:
编程式 代码行为 --基于底层API

(3)TransactionTemplate 简化事务编程的代码;

声明式(建议)
看下面;

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

基于tx命名空间的

基于@Transactional 注解方式

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

Api编程式
声明式 tx 注解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值