事务说白了就是一组操作要么同时成功要么同时失败
事务四个特性
1.原子性,要么同时成功,要么同时失败
2.一致性,操作前后总量一致
3.隔离性,多事务操作,彼此之间不会影响,多个方法操作同一条数据,彼此不能互相影响
4.持久性,事务提交之后不会出现变化
事务一般在service层开启
spring中事务有两种,编程式事务和声明式事务
编程式就是trycatch自己捕获异常提交回滚
声明式事务分为两种,注解和xml形式
事务底层是使用aop
spring中的事务接口platfromTranstionalmanger
mybatis中用datasourceTransationManger,在这个接口中针对不同的框架有不同的实现类
注解方式实现
01创建bean,注入数据源
02配置文件中引入名称空间
03.开启事务注解,在其中指定要使用哪个事务管理器
04在services上加注解@Transational
该注解可以加在类上也可以加在方法上
事务的传播行为
@Transational注解中可以加的属性
意思如下
事务的传播行为
意思就是一个有事务方法调用一个没事务方法应该怎么做,或者有事务调用有事务,也就是多事务方法进行互相之间调用的时候,这些事务应该怎么处理
这就是传播行为’
requard具体例子
required_new
事务的隔离级别
类比数据库的隔离级别
脏读问题,两个事务方法同时操作一条数据,一个事务可以读到另一个事务未提交的操作.
不可重复读问题,
一个未提交事务读取到另一个提交事务的修改数据
虚读,一个未提交事务,读到另一个提交事务添加的数据
通过设置事务的隔离性可以解决事务读的问题
在注解中设置隔离级别
mysql默认可重复读,不能解决幻读问题
关于超时时间,spring中默认是-1,也就是不超时
注解中设置
read onliy
回滚可设置异常类型,一些异常回滚,一些不会滚
事务操作, xml方式
01配置事务管理器
02配置通知
03配置切入点切面
事务操作(完全注解开发声明式事务管理)
01 给配置类加注解
02
数据库连接xml转注解
加载配置类calss