事务概念
1 什么事务
一组操作,要么成功,要么失败
2 事务特性
ACID
3 不考虑隔离性产生读问题
脏读,不可重复读,幻读,
4 解决读问题
(1)设置隔离级别
Spring事务管理api
1 spring事务管理两种方式
第一种 编程式事务管理(不用)
第二种 声明式事务管理
(1)基于xml配置文件实现
(2)基于注解实现
声明式事务管理(xml配置)
1 配置文件方式使用aop思想配置
第一步 配置事务管理器
第二步 配置事务增强
第三步 配置切面
声明式事务管理(注解)
第一步 配置事务管理器
第二步 开启事务注解
《tx:annotation-driven trasaction-manager = “transactionManager”/>
第三步 在要使用事务的方法所在类上面添加注解
@Transactional
声明式事务处理完全可以看出是一个具体的Spring AOP应用。
声明式事务处理的大致过程:在为事务处理配置好AOP的基础设施(比如,对应的Proxy代理对象和事务处理Interceptor拦截器对象)之后,首先需要完成对这些事务属性配置的读取,这些属性的读取处理是在TransactionInterceptor中实现的;
TransactionInterceptor是使用AOP实现声明式事务处理的拦截器,封装了Spring对声明式事务处理实现的基本过程;
TransactionAttributeSource和TransactionAttribute这两个类,他们封装了对声明式事务处理属性的识别,以及信息读入和配置。
TransactionInfo和TransactionStatus这两个对象,它们存放事务处理信息的主要数据对象,它们通过与线程的绑定(ThreadLocal)来实现事务的隔离性。TransactionInfo持有TransactionStatus,TransactionStatus掌管事务执行的详细信息,包括具体的事务对象、事务执行状态、事务设置状态。在事务的创建、启动、提交和回滚过程中,都与TransactionStatus对象中的数据打交道。具体的事务处理是由事务处理器TransactionManager来完成。