声明式事务.
1、回顾事务.
- 事务在开发中十分重要,涉及到数据的一致性问题,不能马虎
- 确保完整性和一致性
- 把一组业务当成一个业务来做:要么都成功,要么都失败
事务ACID原则.
- 原子性
- 一致性
- 隔离性
- 多个业务可能操作同一个资源,防止数据损坏
- 持久性
- 事务一旦提交,无论系统发生什么问题,结果都不会再被影响,被持久化到存储器中
2、Spring中的事务管理.
- 声明式事务:AOP
- 编程式事务:需要在原有代码中,进行事务管理(try-catch中含事务回滚)
3、声明式事务实现.
交由容器管理事务
推荐使用
4、编程式事务管理.
MyBatis 的 SqlSession
提供几个方法来在代码中处理事务。但是当使用 MyBatis-Spring 时,你的 bean 将会注入由 Spring 管理的 SqlSession
或映射器。也就是说,Spring 总是为你处理了事务。
你不能在 Spring 管理的 SqlSession
上调用 SqlSession.commit()
,SqlSession.rollback()
或 SqlSession.close()
方法。如果这样做了,就会抛出 UnsupportedOperationException
异常。在使用注入的映射器时,这些方法也不会暴露出来。
无论 JDBC 连接是否设置为自动提交,调用 SqlSession
数据方法或在 Spring 事务之外调用任何在映射器中方法,事务都将会自动被提交。