spring事务使用
- spring的事务管理有几种方式实现,如何实现?
事务的实现方式:实现方式共有两种:编码方式;声明式事务管理方式
基于aop技术实现的声明式事务管理,实质就是:在方法执行前后进行拦截,然后再目标方法开始之前创建并加入事务执行完目标方法后根据执行情况提交或回滚事务.
声明式事务管理又有两种实现方式:基于xml配置文件的方式;另一个实在业务方法上进行@transaction注解,将事务规则应用到业务逻辑中。
一种常见的事务管理配置:事务拦截器transactioninterceptor和事务自动代理beannameautoproxycreator相结合的方式。
- 事物配置中有哪些属性可以配置
(1)、事务的传播性:@transactional(propagation=propagation.required)
如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)
(2)、事务的超时性:@transactional(timeout=30) //默认是30秒
注意这里说的是事务的超时性而不是connection的超时性,这两个是有区别的
(3)、事务的隔离级别:@transactional(isolation = isolation.read_uncommitted)
读取未提交数据(会出现脏读, 不可重复读) 基本不使用
(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