【spring】spring事务

spring支持声明式注解

事务@Transactional注解只能用于public修饰的方法

一个方法被事务注解后,需要等方法运行完才能提交所有的sql

事务的ACID特征:即原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

rollbackFor可以指定事务回滚的异常类,一般分为两种:RuntimeException运行时异常以及其它。

事务传播行为:

@Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下) 
@Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务 
@Transactional(propagation=Propagation.REQUIRES_NEW) :不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕后继续执行老的事务 
@Transactional(propagation=Propagation.MANDATORY) :必须在一个已有的事务中执行,否则抛出异常 
@Transactional(propagation=Propagation.NEVER) :必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反) 
@Transactional(propagation=Propagation.SUPPORTS) :如果其他bean调用这个方法,在其他bean中声明事务那就用事务,如果其他bean没有声明事务,那就不用事务

https://www.cnblogs.com/jasonboren/p/13678237.html

spring事务隔离级别

1)DEFAULT默认

2)READ_UNCOMMITTED读未提交

3)READ_COMMITTED读已提交

4)REPEATABLE_READ可重复读

5)SERIALIZABLE串行化