事务的实现方式:实现方式共有两种:编码方式;声明式事务管理方式spring
基于AOP技术实现的声明式事务管理,实质就是:在方法执行先后进行拦截,而后再目标方法开始以前建立并加入事务执行完目标方法后根据执行状况提交或回滚事务.数组
声明式事务管理又有两种实现方式:基于xml配置文件的方式;另外一个实在业务方法上进行@Transaction注解,将事务规则应用到业务逻辑中。编码
一种常见的事务管理配置:事务拦截器TransactionInterceptor和事务自动代理BeanNameAutoProxyCreator相结合的方式。spa
(1)、事务的传播性:@Transactional(propagation=Propagation.REQUIRED) .net
若是有事务, 那么加入事务, 没有的话新建一个(默认状况下)代理
(2)、事务的超时性:@Transactional(timeout=30) //默认是30秒 xml
注意这里说的是事务的超时性而不是Connection的超时性,这两个是有区别的blog
(3)、事务的隔离级别:@Transactional(isolation = Isolation.READ_UNCOMMITTED)事务
读取未提交数据(会出现脏读, 不可重复读) 基本不使用io
(4)、回滚:
指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)
指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})
该属性用于设置须要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。
(5)、只读:@Transactional(readOnly=true)
该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。
这种注解方式实现事务的配置以及一些属性的定义,事务的东西还有不少要注意的事项
转自:https://blog.csdn.net/rocksteadypro/article/details/79542052