ssm事务管理(Spring jdbc内置事务管理器)

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);

	}

}
属性类型默认值说明
propagationPropagation枚举REQUIRED事务传播属性 (下有说明)
isolationisolation枚举DEFAULT事务隔离级别 (另有说明)
readOnlybooleanfalse是否只读
timeoutint-1超时(秒)
rollbackForClass[] {}需要回滚的异常类
rollbackForClassNameString[] {}需要回滚的异常类名
noRollbackForClass[] {}不需要回滚的异常类
noRollbackForClassNameString[] {}不需要回滚的异常类名

————————————————
部分引用↑ 原文链接:https://blog.csdn.net/zhen_6137/article/details/82024819

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值