传播属性:
1.支持当前事务,如果当前没有事务,就新建一个事务
2.支持当前事务,如果当前没有事务,就以非事务方式执行
3.支持当前事务,如果当前没有事务,就抛出异常
4.新建事务,如果当前存在事务,把当前事务挂起
5.以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
6.以非事务方式执行,如果当前存在事务,则抛出异常
7.加入当前正要执行的事务不在另外一个事务里,那么就起一个新的事务
8.如果当前在事务中,即以事务的形式运行,如果当前不再一个事务中,那么就以非事务的形式运行
9.必须在一个事务中运行。也就是说,他只能被一个父事务调用。否则,他就要抛出异常
10.当执行到ServiceB.methodB的时候,ServiceA.methodA所在的事务就会挂起,ServiceB.methodB会起一个新的事务,等待ServiceB.methodB的事务完成以后,
他才继续执行
11.当执行到ServiceB.methodB时,ServiceA.methodA的事务挂起,而他以非事务的状态运行完,再继续ServiceA.methodA的事务
12.Nested的事务和他的父事务是相依的,他的提交是要等和他的父事务一块提交的。也就是说,如果父事务最后回滚,他也要回滚的
事务隔离级别:
1.Serializable:最严格的级别,事务串行执行,资源消耗最大
2.REPEATABLE READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据
3.READ COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”
4.Read Uncommitted:保证了读取过程中不会读取到非法数据。隔离级别在于处理多事务的并发问题