Spring事务
什么是事务
事务是数据库操作最基本操作组,逻辑上是一组操作,要么都成功,要么都失败
事务四个特性
- 原子性
- 一致性
- 隔离性
- 持久性
spring事务分为编程式事务和声明式事务
声明式事务:
- 基于xml配置
- 基于注解
一般使用注解
@Transactionnal
参数:
- propagation:事务传播行为 默认值 REQUIRED
值:
- REQUIRED:如果当前存在事务,则会加入此事务,如果没有,则新建一个事务
- REQUIRED_NEW:无论存不存在事务,都会创建一个新事务
- SUPPORTS:当前有事务,则在事务中运行,当前没有,那就没有
- NOT_SUPPORTS:不在事务中运行,如果存在事务则挂起事务
- MANDATOR:当前方法必须在事务中运行,如果没有正在运行的事务,则抛出异常
- NEVER:当前方法不应在事务中运行,如果有正在运行的事务,则抛出异常
- NESTED:如果存在事务,则开启嵌套事务运行,否则开启一个新事物
- ioslation:事务隔离级别:多事务操作之间不会产生影响 mysql默认值 REPEATABLE READ
- 不考虑隔离性则会存在 :脏读、不可重复读、幻读
- 脏读:一个未提交的事务读取到另一个未提交的事务中的数据
- 不可重复读:一个未提交的事务读取到另一个已提交事务的修改值
- 幻读:一个未提交事务读取到另一个事物添加的数据
- 通过设置事务隔离性,来解决此问题
| -- | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| READ UNCOMMITTED | 有 | 有 | 有 |
| READ COMMITTED | 无 | 有 | 有 |
| REPEATABLE READ | 无 | 无 | 有 |
| SERIALIZABLE | 无 | 无 | 无 |
- timeout:超时时间,超过这个时间就会回滚 默认值-1
- readOnly:是否只读
- rollbackFor:回滚
- noRollbackFor:不回滚

浙公网安备 33010602011771号