Spring中Transactional放在类级别和方法级别上有什么不同?

如题所述

一般类上这么写

默认将类中的所有函数纳入事务管理.

@Transactional(readOnly=true) //配置事务 查询使用只读
public Demo{ //方法的写法 (增删改要写 ReadOnly=false 为可写)

@Transactiona

(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT,readOnly=false)public void saveUser(){ }

Propagation.REQUIRED :有事务就处于当前事务中,没事务就创建一个事务

isolation=Isolation.DEFAULT:事务数据库的默认隔离级别


readOnly=false:可写 针对 增删改操作

注意:方法的@Transactional会覆盖类上面声明的事务

1、PROPAGATION.REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

2、PROPAGATION.SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘

3、PROPAGATION.MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

4、PROPAGATION.REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

5、PROPAGATION.NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

6、PROPAGATION.NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

7、PROPAGATION.NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网