1.概念
数据库操作中最基本的单元,逻辑上一组操作,要么都成功,要么都失败
2.四个特性
a.原子性:要么都成功,要么都失败
b.一致性:总量不变
c.隔离性:操作互补干涉
d.持久性:一旦操作,影响就产生了
3.场景分析(银行转账)
事务引出:解决中途异常问题
事务的开启逻辑-利用事务的特性进行回滚
4.事务管理
a.事务一般添加在service层上
b.在spring进行事务管理操作:编程式事务管理(3使用的说明)跟声明式事务管理(一般使用)
c.声明式事务管理(底层AOP)
(1)基于注解方法
(2)基于xml配置
5.基于注解实现事务
(1)创建事务管理器,因为用的是模板创建,因此class引入该class
开启事务注解,配置文件中引起名称空间tx
配置中开启事务注解
service类上面or方法上面加上@Transactional
(2)声明式事务管理参数配置
propagation:事务传播行为
a.事务的7种传播行为
required:方法1没把方法2使用就独立在该事务运行,如果被使用在方法2事务种运行
required_new:T1跟T2两个相互不影响
supports:
(3) 隔离级别:因为事务具有隔离性,所以多事务之间不会产生影响,所以不考虑隔离性的问题。
如果没有隔离性,会参数以下问题:
a.脏读:一个未提交的事务读取到别的未提交的事务
b.不可重复读:一个未提交的事务读取到了另一提交事务修改的数据
c.幻读:一个未提交的事务读取到了另一提交事务添加的数据
事务隔离性的操作:
(3).@Transactional概念
a.隔离级别设置:isolation=***
b.超时时间(timeout)的概念:事务操作需要在一定时间,否则回滚;默认-1,以秒为单位
c.readOnly:默认false
d.rollbackFor:设置那些异常可以回滚
e.notRollbackFor:与上相反
6.基于xml实现事务(声明式事务管理)
步骤:配置事务管理器,配置通知,配置切入点和切面
7.完全注解开发