spring事务类型,事务传递,隔离级别?

一、事务类型

- 编程式事务:

​            a.     通过编写代码来管理事务的开启、提交和回滚。

​            b.     适用于需要高度定制化控制事务行为的场景。

​            c.     通常使用 TransactionTemplate 或 PlatformTransactionManager 进行管理。

- 声明式事务:

​            a.     通过配置和注解来声明事务,开发者无需编写管理事务的代码。

​            b.     更简洁,适合大多数常见的事务管理场景。

​            c.     主要使用 @Transactional 注解来定义事务边界和属性。

二、事务传递

spring事务传递:

在 Java 中,事务传递是指在多个事务嵌套执行的过程中,事务如何传递和处理。当一个方法调用另外一个方法时,如果这些方法都使用了事务,那么这些事务可能会被合并为一个大的事务,也可能会出现不同的嵌套级别

Spring中默认的事务传递行为是required,如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。

这是 Spring 中的事务传播行为类型,用于控制在一个事务方法调用另一个事务方法时,事务应该如何传播。

  • PROPAGATION_SUPPORTS:如果当前有事务,则加入该事务;如果当前没有事务,则以非事务方式执行。

  • PROPAGATION_MANDATORY:必须存在一个当前的事务,否则抛出异常。

  • PROPAGATION_REQUIRES_NEW:新建一个全新的事务,并且暂停当前事务,直到新建的事务完成。

  • PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起该事务。

三、隔离级别

  • 读未提交(READ-UNCOMMITTED):允许读取未提交的数据,存在脏读、不可重复读、幻读等问题。

  • 读已提交(READ-COMMITTED ):只能读取已提交的数据,可以避免脏读,但仍可能存在不可重复读和幻读问题。

  • 可重复读(REPEATABLE-READ):保证同一个事务中多次读取同一数据的结果是一致的,可以避免脏读和不可重复读,但仍可能存在幻读问题。

  • 串行化(SERIALIZABLE):最高的隔离级别,保证并发执行的事务之间不会产生任何影响,可以避免脏读、不可重复读和幻读问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值