声明式事务@Transactional
创始人
2024-02-01 22:08:46
0

事务

事务管理在 Web 系统开发中是非常重要的,可以在一定程度上保证数据的一致性。Spring提供了非常优秀的事务管理机制,主要分为:

  • 编程式事务
  • 声明式事务

编程式事物

在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强。

try {// TODO transactionManager.commit(status);
} catch (Exception e) {transactionManager.rollback(status);throw new Exception("transaction fail");
}

声明式事物

基于 AOP 面向切面的,它将具体业务与事务处理部分解耦,代码侵入性很低,在实际开发中使用声明式事务用的比较多。

声明式事务也有两种实现方式,

  • 基于TX和AOP的xml配置文件的方式,
  • 基于@Transactional注解的方式。

显然基于注解的方式更简单易用。

@Transactional
public boolean updateUser(User user){return userMapper.updateById(user) > 0;
}

@Transactional

@Transactional 可以作用在接口、类、类方法。

作用于类:

如果把@Transactional 注解放在类上时,表示所有该类的public方法都配置相同的事务属性信息。

作用于方法:

如果类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。

作用于接口:

如果标注在 Interface 上并且配置了 Spring AOP 使用 CGLib 动态代理,将会导致@Transactional 注解失效,一般不使用在接口上。

@Transactional的属性

propagation

表示事务的传播行为,默认值为 Propagation.REQUIRED

  • Propagation.REQUIRED:如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。

  • Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。

  • Propagation.MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。

  • Propagation.REQUIRES_NEW:重新创建一个新的事务,如果当前存在事务,暂停当前的事务。

  • Propagation.NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,暂停当前的事务。

  • Propagation.NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。

  • Propagation.NESTED :和 Propagation.REQUIRED 效果一样。

isolation

事务的隔离级别,默认值为 Isolation.DEFAULT , 使用底层数据库默认的隔离级别。
在这里插入图片描述

  • Isolation.DEFAULT
  • Isolation.READ_UNCOMMITTED
  • Isolation.READ_COMMITTED
  • Isolation.REPEATABLE_READ
  • Isolation.SERIALIZABLE

timeout

事务的超时时间,默认值为 -1。如果超过该时间限制但事务还没有完成,则自动回滚事务。

readOnly

指定事务是否为只读事务,默认值为 false;读取数据的时候,可以设置 read-only 为 true。

rollbackFor

用于指定能够触发事务回滚的异常类型,可以指定多个异常类型。

noRollbackFor

抛出指定的异常类型,不回滚事务,也可以指定多个异常类型。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...