目标
事务回顾
Spring事务管理的一组API
Spring的编程式事务管理
Spring声明式事务管理
事务回顾
什么是事务?
事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败
事务的特性
原子性:
是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生
一致性:
指的是事务前后数据的完整性必须保持一致
隔离性:
指的是多个用户并发访问数据时,一个用户的事务不能被其他用户的书屋所烦扰,多个并发事务之间数据要被相互隔离
持久性:
指的是一个事务一旦被提交,它对数据库中数据的改变是永久性的,即使数据库发生故障也不应该对其有任何影响
Spring接口介绍
PlatformTransactionManager 平台事务管理器
Spring为不同的持久框架提供了不同PlatformTransactionManager接口实现
TransactionDefinition 事务定义信息(隔离、传播、超时、只读)
如果不考虑隔离级别,会引发安全问题有:
脏读:
一个事务读取了另一个事务改写但还未提交的数据,如果数据被回滚,则读到的数据是无效的
不可重复读:
在同一事务中,多次读取同一数据返回的结果不同
幻读:
一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了
再后来的查询中,第一个事务就会发现有些原来没有的记录
事务的传播行为
解决业务相互调用的问题
TransactionStatus 事务具体运行状态
Spring的编程式事务管理
Spring的声明式的事务管理
基于TransactionProxyFactoryBean的方式:劣势,需为每个方法配置一个
基于tx/aop
引入命名空间
配置
基于annotation