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

 我来答
159357asdsky
推荐于2019-10-28 · TA获得超过6458个赞
知道小有建树答主
回答量:130
采纳率:70%
帮助的人:6.1万
展开全部

一般类上这么写

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

@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类似的操作。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式