spring的事物管理
事物本身是数据库中的概念,按理说应该在数据访问层(dao)
绝大多数的情况下,我们是把事物提升到业务逻辑层
01,使用spring的事务代理工厂来管理事务
02,使用spring的注解来管理事务 常用
03,使用AspectJ的AOP配置来管理里事务
需要掌握的两个属性名;
isolation;事务隔离级别
01,default;采用数据库默认的事务隔离级别
001,mysql------》repeatable-read
002,oracle------》read_committed
02,repeatable-read;可重复读取,解决了脏读,不可重复读,没解决幻读
03,read_committed;读已提交,解决了脏读,没解决不可重复读,黄渡
04,read_uncommitted;读未提交,什么都没解决
05,serializable;窜行化,级别最高,效率低,不存在开发问题
propagation;事务传播行为,一共7种方式
01,required;是spring默认的事务传播行为
指定的方法必须在事物中执行,如果没有事物。则会自动创建一个事务
02,supports;有事务就在事务环境下运行,没有事务就直接运行
03,mandatatory;指定的方法必须在事务中执行,如果没有事务,则抛出异常
04,requires_new;总是新建一个事务,如果当前方法存在事务,这把当前时间挂起,
直到新创建的事务执行完毕后执行
05,not_supported;指定方法不能再事务中执行,如果当前方法存在事务,则把当前的
事务挂起
06,never;指定的方法不能再事务中执行,如果当前方法存在事务,就会抛出异常
07,nested;指定的方法必须在事务中执行
如果执行的方法没有事务,则会创建一个事务!
如果执行的方法有事务,则会嵌套执行
timeout_default;定义了事务默认的超时时间!