了解Spring事务

一、事务概念(transaction)

指要做的或所做的事情。指访问并可能更新数据库中各种数据项的一个程序执行单元。
在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或者整个程序。
事务通常由高级数据库操纵语言/编程语言书写的用户程序的执行所引起,由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

二、特性

事务是恢复和并发控制的基本单位

4个属性ACID

  1. 原子性:atomicity。一个事务是一个不可分割的工作单位,要么都做、要么不做
  2. 一致性:consistency。事务必须是使数据库从一个一致性状态转变到另一个一致性状态。
  3. 隔离性:isolation。事务的执行不能被干扰。一个事务内部操作及数据对其他的“隔离",并发执行的各个事务之间不能互相干扰。
  4. 持久性:durability。一个事务一旦提交,他对数据库中数据的改变就应该是永久性的

三、事务类型

手动事务:此模型提供了对事务的标准控制,但它缺少一些内置于自动事务模型的简化操作。
自动事务:声明性事务指定对象如何参与事务,如何以编程方式被配置。与对象关联的事务自动流向合适的资源管理器,有的关联驱动程序在对象的上下文中查找事务,并通过分布式事务处理协调器 (DTC) 在此事务中登记。

四、Spring的事务管理

事务原本是数据库中的概念,在 Dao 层。

但一般情况下,需要将事务提升到业务层,即 Service 层。

这样做是为了能够使用事务的特性来管理具体的业务。

在 Spring 中通常可以通过以下两种方式来实现对事务的管理:
(1)使用 Spring 的事务注解管理事务
(2)使用 AspectJ 的 AOP 配置管理事务

五、相关API

事务管理器接口

PlatformTransactionManager 接口对象
主要作用:完成事务的提交、回滚及获取事务的状态信息。
在这里插入图片描述

  1. 常用的两个实现类

DataSourceTransactionManager:使用 JDBC 或 MyBatis 进行数据库操作时使用。

HibernateTransactionManager:使用 Hibernate 进行持久化数据时使用

  1. Spring的回滚方式
    发生运行时异常和error时回滚,发生编译异常时提交

事务定义接口

TransactionDefinition ,定义了事务描述相关的三类常量:事务隔离级别、事务传播行为、事务默认超时时限,及对它们的操作

六、Spring 的事务注解

通过@Transactional 注解方式,可将事务织入到相应 public 方法中,实现事务管理。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值