栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringJDBC中的事务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringJDBC中的事务

一.什么是事务

事务是一种能够保证同一个业务中多个写操作(增删改)要么全部成功,要么全部失败的一种机制

二.添加事务

在业务方法上添加@Transactional注解即可保证该业务是事务性的,即要么业务中的所有写操作要么全部成功,要么全部失败

此注解可以添加在:

接口:

会使得此接口的所有实现方法都是事务性的

接口的抽象方法:

会使得此接口的实现类中,重写的此方法是事务性的

只作用于当前方法

如果接口上也配置了此注解,并且接口和抽象方法的注解均配置了参数,以方法上的配置为准

业务实现类:

会使得当前类中的所有重写的方法都是事务性的

自定义方法不会是事务性的

业务实现类中的方法:

不可以添加在自定义的(不是重写的)方法上---语法上允许,但是执行的时候不允许,SpringJDBC是通过接口代理的方式进行事务管理,所以,只对接口中声明的方法有效

会使得此实现类中,重写的此方法是事务性的

只作用于当前方法

如果实现类上也配置了此注解,并且实现类和方法的注解均配置了参数,以方法上的配置为准

通常,应该将此注解添加在接口的抽象方法上(或者为了避免遗漏,可以添加在接口上)

三.SpringJDBC中处理事务的机制

SpringJDBC中处理事务的机制大致是:

开启事务:Begin
try{
    你的业务方法
    提交:commit
}catch(RuntimeException e){
    回滚:rollback
}

所以,为了保证事务性,所有的写操作在执行之后,必须有某个判定失败的标准,且判定失败后,必须抛出RuntimeException或其子孙类异常

SpringJDBC默认对RuntimeException进行回滚处理,有必要的话,也可以配置为其他异常类型

四.事务传播机制(在注解中的参数部分添加)

当多个事务同时存在的时候,spring如何处理这些事务的行为.事务传播机制实际上是使用简单的ThreadLocal实现的.如果调用的方法是在新线程调用的,事务传播是会失效的.

如何解决失效:可考虑全局事务,否则就加锁处理

7大事务传播机制:

1.Propagation_Required:默认传播行为,如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务.

2.propagation_requires_new:无论当前存不存在事务,都创建新事务进行执行

3.PROPAGATION_SUPPORTS:如果当前存在事务,就加入该事务;如果当前不存在事务,就以非事务执行。

4.PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

5.PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则按REQUIRED属性执行。

6.PROPAGATION_MANDATORY:如果当前存在事务,就加入该事务;如果当前不存在事务,就抛出异常。

7.PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

上述传播机制中,最常用的是Required和requires_new

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/975991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号