一、事务回顾
对,就是数据库学的【事务】
一句话介绍事务:要么都成功,要么都失败。
4个特性:
- 原子性
- 隔离性
- 一致性
- 。。。
二、没有事务管理的例子
既然现在学习的是数据库中的事物,那就一定需要数据库,既然需要数据库,那就需要绑定mybatis,上一节已经学过如何绑定mybatis了,就接着上一个项目去用。
再增加两个方法:addUser和deleteUser
执行数据库delete操作之前执行了add操作,delete失败了,那add成功了吗?
不幸的是,成功了
这不符合事务的要么都成功,要么都失败。
三、spring中的事务管理
spring可以实现两种方式的事务管理
- 声明式事务管理:AOP,切进去,不用改动原有代码
- 编程式事物管理:通过try-catch+回滚的方式,要手动修改原有代码,直接不学
我们下面只学声明式事务管理。
1. 在xml文件中配置声明式事物
2. AOP实现事务的织入
给所有方法(*)配置事物
3. 切入(之前学的spring实现AOP的方式(一))
express表达式把mapper包下所有类的所有方法都配上了事务,所以上个例子中的 selectUser方法被配成了事务,一个delete操作失败,整个事务失败(用回滚实现删除add操作已经生效的部分)
到现在为止,我们发现一直在写配置文件,并没有改代码。
再次运行上面例子中的代码,