ssm事务管理(Spring jdbc)
SSM框架中使用注解的形式进行事务管理。
事务的4个特性:
简单来说,所谓的事务,是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
- 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
配置文件(applicationContext.xml)
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 引用数据库连接池 -->
<property name="dataSource" ref="ds"/>
</bean>
<!-- 配置事务注解驱动 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
测试@Transactional注解管理事务
模拟转账异常自动回滚事务
@Service
@Transactional //加了改注解,表示改类下的所有方法,都启用事务管理
public class BankServiceImpl implements IBankService {
@Resource
private BankMapper bankMapper;
@Override
public void transferAmount() {
//张三减去1000
Map<String,Object> map = new HashMap<String,Object>();
map.put("accountName", "张三");
map.put("money", -1000);
//更新张三的金额
bankMapper.doUpdate(map);
//认为制造异常
System.out.println(1/0);
//李四加上1000
map.put("accountName", "李四");
map.put("money", 1000);
bankMapper.doUpdate(map);
}
}
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| propagation | Propagation枚举 | REQUIRED | 事务传播属性 (下有说明) |
| isolation | isolation枚举 | DEFAULT | 事务隔离级别 (另有说明) |
| readOnly | boolean | false | 是否只读 |
| timeout | int | -1 | 超时(秒) |
| rollbackFor | Class[] {} | 需要回滚的异常类 | |
| rollbackForClassName | String[] {} | 需要回滚的异常类名 | |
| noRollbackFor | Class[] {} | 不需要回滚的异常类 | |
| noRollbackForClassName | String[] {} | 不需要回滚的异常类名 |
————————————————
部分引用↑ 原文链接:https://blog.youkuaiyun.com/zhen_6137/article/details/82024819
本文深入探讨SSM框架中的事务管理,详细解释了事务的四大特性:原子性、一致性、隔离性和持久性(ACID)。并通过配置示例展示了如何在Spring环境中使用注解进行事务管理,以及如何通过模拟转账异常来测试事务的回滚机制。
5650

被折叠的 条评论
为什么被折叠?



