为什么需要事务?

  1. 事务管理是开发的时候必用的一个功能。
  2. 事务管理用来确保数据的完整性和一致性。
  3. 事务管理就是一系列的动作,他们被当做一个单独的工作单元,这些动作要么全部完成,要么全部不起作用。

本文仅仅是完成一个准备工作,下一篇文章才来阐述如何进行事务管理。

一、建立以下表

  1. book(bookid,bookname,price)(1,mysql,100)(2,java,50)
  2. bookstock(bookid,amount)(1,100)(2,80)
  3. buyer(buyerid,buyername,money)(1,xie,160)(2,yxin,520)

二、写一个接口

三、写一个实现类

四、写配置文件

五、写一个测试类

成功运行了三个方法。

但是在mysql中,很多东西都可以是负的。

比如我xie只有160块钱,但是可以买2本100的mysql。不但能买到2本,xie的钱可以变成-40,买多了书的库存甚至能变成负的。

这些现象都是我不想看到的,所以需要手工抛出异常。

六、写出错误类

两种类型的错误:库存错误、金额错误。

七、写出报错逻辑

八、整合整个购买流程

新建接口类:

实现接口类:

自动装配bookshopDao。

⑨、更改测试类

  1. 这段程序运行的时候会先把书的库存-1,如果库存不足,则爆出库存不足的错误,运行停止。
  2. 如果库存充足,则会继续往下运行,如果购买者余额足够,则会扣除相应的金额,如果余额不够,则会爆出余额不足的错误。

那么问题来了,虽然余额不足报错了,但是库存已经-1了,出现了购买者没有成功购买,但是库存已经减少了的异常情况,整个购买流程没有作为一个整体事务进行处理,导致系统出错。

这就是为什么我们需要spring事务管理。spring可以帮助我们管理实务,保证一致性。

二、总结

下一篇文章将会详细讨论。

发表评论

电子邮件地址不会被公开。 必填项已用*标注