java transaction使用_「java三分钟」Transaction详解

521932163813672d315bb5081dfbddcf.png

关注我,每天三分钟,带你轻松掌握一个Java相关知识点。

spring实现事务的方式有两种,编程式和声明式。

编程式是指在写业务代码中将事务代码也写进去,这是很古老的做法了,在现在看起来可能不可思议。

在spring一统天下后,aop的思想深入人心,声明式实现事务也为广大程序员使用。我们今天讲的@Transaction就是声明式事务的一种实现方式。

在之前的文章中,我们聊过了事务的ACID、事务的传播特性以及事务的隔离级别,其实这些都是事务需要关注的一个面,那么事务究竟有几个方面需要我们掌握呢?

911c416f37510e1974201f08232aec29.png

这里需要注明一下,也有人把回滚规则不作为事务属性,其实怎么理解无所谓,这都是为了对事务有一个全面的了解。

那么我们没有说过的回滚规则、是否只读和超时时间是干什么的呢?

回滚规则:默认情况下只有未检查异常(RuntimeException和Error类型的异常)会导致事务回滚. 而受检查异常不会。

事务的回滚规则可以通过@Transactional 注解的 rollbackFor 和 noRollbackFor 属性来定义。这两个属性被声明为 Class[] 类型的, 因此可以为这两个属性指定多个异常类。

是否只读:在类和方法上标注,表明该类下所有方法或者该方法只是查询,不会涉及到修改、增加和删除,因为事务对于数据库来说,是笔不小的开支,数据库引擎针对只读事务能做优化来提高性能。

超时时间:事务本质是在数据库中获得锁,但是如果让它无限的霸占资源,很可能会导致性能问题,超时时间就是规定该事务在回滚之前能占用资源多久。

@Transactional 注解可以加载类上,也可以加在方法上,如果加在类上,则表用这个方法中所有的public类都有事务,而方法上则事务只针对这个方法。

注意,这个注解只对public方法有效。

在javaweb开发中,我们一般将事务注解放到service层。

以上就是今天的知识点,各位小伙伴get到吗?创作不易,望各位多多点赞收藏,有什么建议可以留言告诉我,我会积极采纳!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值