Spring之事务管理与事务的传播特性

本文详细探讨了Spring框架中的事务管理机制,包括事务的ACID属性、事务的隔离级别以及事务的回滚规则。重点讲解了事务的传播行为,如PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS等不同传播特性的应用场景和实战配置,帮助读者深入掌握如何在Spring中有效控制事务的边界。
摘要由CSDN通过智能技术生成
1.Spring 事务管理
1.1.Spring 事务概述
事务是一个不可分割的逻辑工作单元,具备ACID特性,实际工作中可借助Spring进行事务管理。
事务四大特性:ACID
1)原子型(一个事务中的多个操作要么都成功要么都失败)
2)一致性(例如存钱操作,存之前和存之后的钱数应该是一致的)
3)隔离性(事务与事务应该是相互隔离的)
4)持久性(事务一旦提交,数据要持久保存)

Spring提供了两种事务管理方式, 编程式事务和声明式事务。编程式事务指的是通过编码方式实现事务控制;声明式事务基于 AOP,将具体业务逻辑与事务处理逻辑解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。
Spring中声明式事务处理有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于@Transactional 注解的方式。

本讲重点讲解实际项目中最常用的声明式事务管理,以简化事务的编码操作。

1.2.Spring事务案例分析
例如现有两个订单操作,需要更新库存。

这里写代码片


当库存充足时两个事务都可以成功,当库存不够时有的事务就要回滚。

这里写代码片


假如采用编程方式控制事务:(业务层)
Connection conn=DbUtil.getConnection();
conn.setAutoCommit(false);
try{
….
dao.updateObject(….)
dao.deleteObject(…)

conn.commit();
}catch(SQLException e){
conn.rollback();

}finally{
conn.close();
}

编程式事务处理,代码量比较大,侵入性比较高,维护相对困难。

实际项目中通常会采用代理方式进行事务处理:
1)基于Spring AOP实现(底层是基于JDK动态代理和CGLIB实现)
2)基于JDK 动态代理
3)基于CGLIB 代理

2.Spring 声明式事务处理

2.1.基于注解方式实现


Step1:在spring配置文件中启用事务注解

<bean id="txManager" cla
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值