Spring----学习(21)---Spring声名式事务管理(依靠注解)

1.就是为了确保同一条记录在数据中的状态,记录的信息保持一致。

例子:

   一个用户,买了一本书,这时需要库存书-1,用户的账户余额 - 书的价格。

   在没有添加事务的时候,如果库存够,但是用户余额不足。导致库存 - 1,但是因为余额不足,SQL执行失败,

  此时应该回滚到库存 - 1 之前,但是由于没有事务管理。没有返回记录,所以导致数据库中的记录发生错误。

 2.spring的声名式事务管理。(依靠注解)

<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 启用事务注解 -->
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

在需要添加事务的地方,添加注解:@Transactional

@Service("bookServiceImpl")
public class BookServiceImpl implements BookService{

	@Autowired
	private BookShopDao bookShopDao;

	@Transactional
	@Override
	public void userBuy(String username, String isbn) {
        //1 获取书的单价
		int price = bookShopDao.findBookPriceByIsbn(isbn);
		//2.更新库存
		bookShopDao.updateBookStock(isbn);
		//3.账户余额
		bookShopDao.updateUserAccount(username, price);
	}
}

作为对比:在没有使用spring依靠注解来实现事务管理的时候,希望添加事务管理的代码都必须写在注解出。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值