@Transactional介绍
Transactional注解可以作用在接口、类、类方法
作用接口:不推荐,因为这只有在使用基于接口的代理时它才会生效作用于类:表示该类的所有public方法都配置相同的事务属性信息作用于类方法:只能用于public方法上。注意:如果类于类方法都配置了@Transactional,类方法事务会覆盖类事务
propagation属性
propagation代表事务的传播行为,默认值为Propagation.REQUIRED
Propagation.REQUIRED:如果当前存在事务,则加入该事务,如果当前不存在事务,则新创建事务(也就是说如果A方法和B方法都添加了注解,默认传播模式下,A方法调用B方法,会将两个方法事务合并为一个)Propagation.SUPPORTS:如果当前存在事务,则加入,如果不存在,则以非事务形式运行Propagation.MANDATORY:如果当前存在事务,则加入事务,如果不存在事务,则抛异常Propagation.REQUIRES_NEW:重新创建一个事务,如果当前存在事务,暂停当前事务(如果A方法默认为Propagation.REQUIRED模式,B方法为Propagation.REQUIRES_NEW,在A方法中调用B方法,A方法抛出异常后,B方法不会回滚,因为Propagation.REQUIRES_NEW会暂停A方法的事务)Propagation.NOT_SUPPORTED:以非事务方法运行,如果当前存在事务,暂停当前事务Propagation.NESTED :和Propagation.REQUIRED 效果一样
isolation属性
isolation事务的隔离级别,默认值为Isolation.DEFAULT
Isolation.DEFAULT:使用底层数据库默认的隔离级别Isolation.READ_UNCOMMITTEDIsolation.READ_COMMITTEDIsolation.REPEATABLE_READIsolation.SERIALIZABLE
timeout属性
timeout事务的超时时间,默认值:-1,如果超过该时间限制事务还未完成,则自动回滚
readOnly属性
readOnly指定事务是否