//配置事务 查询使用 只读
@Transactional(rollbackFor=Exception.class,readOnly=true)
public Demo{//方法的写法 (增删改要写 ReadOnly=false 为可写)
@Transactional (propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT,readOnly=false)
public void saveUser(){
}
}
Propagation.REQUIRED :有事务就处于当前事务中,没事务就创建一个事务
isolation=Isolation.DEFAULT:事务数据库的默认隔离级别
readOnly=false:可写 针对 增删改操作
注意:方法的@Transactional会覆盖类上面声明的事务
对于readOnly,oracle实际不支持通过jdbc设置,所以不起作用。如果换成mysql,你会发现readOnly是起作用的,真的是只读的事物,如果里面执行update语句,会抛异常出来!
需要特别注意的是:
rollbackFor=Exception.class,spring默认会对error,runtimeException及其子类等unchecked异常回滚事物,
加上Exception.class之后,spring还会回滚exception及其子类,也就是checked异常。加起来就是会在所有错误和异常情况下都回滚。