事务
事务(Transaction)
是面向关系型数据库(RDBMS)企业应用程序的重要组成部分,用来确保数据的完整性和一致性。
事务是数据库操作最基本单元,逻辑上一组操作要么都成功,如果有一个失败所有操作都失败。
事务具有以下 4 个特性,即原子性、一致性、隔离性和持久性,这 4 个属性称为 ACID 特性。
-
原子性(Atomicity): 一个事务是一个不可分割的工作单位,事务中包括的动作要么都做要么都不做。
-
一致性(Consistency): 事务必须保证数据库从一个一致性状态变到另一个一致性状态,一致性和原子性是密切相关的。
-
隔离性(Isolation): 一个事务的执行不能被其它事务干扰,即一个事务内部的操作及使用的数据对并发的其它事务是隔离的,并发执行的各个事务之间不能互相打扰。
-
持久性(Durability) :持久性也称为永久性,指一个事务一旦提交,它对数据库中数据的改变就是永久性的,后面的其它操作和故障都不应该对其有任何影响。
-
事务操作(声明式事务管理参数配置)
1.在service类上添加注解@Transactional,在这个注解里可以配置事务相关参数
2.propagation:事务传播行为
1)多事务方法直接进行调用,这个过程中事务是如何管理的【事务方法:对数据库表数据进行变化的操作】
3.isolation:事务隔离级别
1)事务有特性称为隔离性,多事务操作之间不会产生影响,不考虑隔离性产生很多问题
2)有三个读问题:脏读,不可重复读,虚(幻)读
脏读:一个未提交事务读取到另一个未提交事务的数据
不可重复读:一个未提交事务读取到另一提交事务修改数据
幻读:一个未提交事务读取到另一个提交事务添加数据
4.timeout:超时时间
事务需要在一定时间内进行提交,如果不提交提前回滚
默认值是-1,设置时间以秒单位进行计算
5.readOnly:是否只读
读:查询操作,写:添加修改删除操作
readOnly默认值false
readOnly设置为true,只能查询
6.rollbackFor:回滚
设置出现哪些异常进行事务回滚
7.norollbackFor:不回滚
设置出现哪些异常不进行事务回滚