Spring中的事务控制简介

A.概念
1.事务的概念
事务是逻辑上一组操作,组成这组操作各个逻辑单元,要么一起成功,要么一起失败。
2.事务的特性
原子性
一致性
隔离性
持久性
如果不考虑隔离性,引发安全问题.
读问题
脏读
不可重复读
虚读
写问题
丢失更新
解决读问题:设置事务隔离级别

						read uncommitted
						read committed
						repeatable read
						Serializable

B. Spring事务管理的API
PlatformTransactionManager,是spring的平台事务管理器,它里面提供了我们常用的操作事务的方法.
在这里插入图片描述
开发中都是使用它的实现类
在这里插入图片描述

真正管理事务的对象

org.springframework.jdbc.datasource.DataSourceTransactionManager 使用Spring
JDBC或iBatis 进行持久化数据时使用
org.springframework.orm.hibernate3.HibernateTransactionManager 使用Hibernate版本进行持久化数据时使用

2.TransactionDefinition事务的定义信息对象

在这里插入图片描述

事务的隔离级别(重点)
在这里插入图片描述

.事务的传播行为(重点)

REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选择(默认值)
REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起。
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)
MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
NEVER:以非事务方式运行,如果当前存在事务,抛出异常
NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行REQUIRED类似的操作。

超时时间

默认值是-1,没有超时限制。如果有,以秒为单位进行设置。

事务是否只读(重点)

建议查询时设置为只读。

TransactionStatus此接口提供的是事务具体的运行状态
在这里插入图片描述
小结:Spring框架进行事务的管理,首先使用TransactionDefinition对事务进行定义。通过PlatformTransactionManager根据TransactionDefinition的定义信息进行事务的管理。在事务管理过程中产生一系列的状态:保存到TransactionStatus中。

猜你喜欢

转载自blog.csdn.net/tangiwang/article/details/83412044