展开

关键词

Spring Boot 事物

也就是说,只有在开启事务的方法中出现异常(默认只有非检测性异常才生效-RuntimeException )(错误-Error)才会自动。 开启事务的方法中事务的情况: ①未发现的异常,程序运行过程中自动抛出RuntimeException或者其子类,程序终止,自动。 ②使用TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();进行手动。 ③注意:如果在try-catch语句中对可能出现的异常(RuntimeException)进行了处理,没有再手动throw异常,spring认为该方法成功执行,不会进行,此时需要调用②中方法进行手动 (from fhadmin.cn) 另外,如果try-catch语句在finally中进行了return操作,那么catch中手动抛出的异常也会被覆盖,同样不会自动

26000

Java的@Transactional事务

处理Springboot下提交事务异常,数据库没有的问题 Spring文档中说道,Spring声明式事务管理默认对非检查型异常和运行时异常进行事务,而对检查型异常则不进行操作。 2、对非检查型异常可以不用捕获,而检查型异常必须用try语句块进行处理或者把异常交给上级方法处理,总之就是必须代码处理它。所以必须service捕获异常,然后再次抛出,这样事务才能生效。 默认规则: 1、让检查型异常也,@Transactional(rollbackFor=Exception.class),一般只需添加这个即可 2、让非检查型异常不回,@Transactional( 若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生。 //updateAccount } } insertOrder 尽管有@Transactional 注解,但它被内部方法 insert 调用,事务被忽略,出现异常事务不会发生

6030
  • 广告
    关闭

    老用户专属续费福利

    云服务器CVM、轻量应用服务器1.5折续费券等您来抽!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Tomcat 自动部署、java project)脚本

    https://blog.csdn.net/wh211212/article/details/53770801 Tomcat 自动部署 自动部署java项目,从打包服务器scp项目war #####" echo "#########################################" fi done Tomcat 最近三次的部署 #!

    47550

    Java代码远程操作oracle数据库,执行sql文件、备份、

    imp|exp 是oracle导入导出工具,由于要备份,所以我们也要安装这两个命令工具。 java代码调用:代码找中env.bat就是上述讲到的环境变量bat脚本 public class SqlplusTest {     public static void main(String[]

    1.1K20

    Java自动化测试(与断言 17)

    将测试结果写回到Excel中 定义数据对象 package com.zhongxin.pojo; public class WriteBackData { private int sheetIndex content; } public void setContent(String content) { this.content = content; } } 批量回操作代码 使用到类似之前Excel到写入操作代码: public static void batchWrite() throws Exception { //的逻辑:遍历wdbList集合,取出sheetIndex void beforeClass(int sheetIndex) { this.sheetIndex = sheetIndex; } /** * 添加回对象到集合中

    28530

    细品事物机制(二)

    XA接口是双向的能在一个事物管理器 和多个资源管理器之间形成通信桥梁,通过协调多个数据源的一致动作,实现全局事物的统一提交或者统一/ 但是对于XA来说是一种通用规范,在java中实现的技术规范就是我们常讲的 这套接口是给 Java EE 服务器提供容器事务(由容器自动负责事务管理)使用的,还提供了另外一套javax.transaction.UserTransaction接口,用于通过程序代码手动开启、提交和事务 example:在java中实现事务的方式有两种,1.声明式事物,2.编程式事物。 两段式提交中投票阶段失败了可以补救(),而提交阶段失败了无法补救(不再改变提交或的结果,只能等崩溃的节点重新恢复),因而此阶段耗时应尽可能短,这也是为了尽量控制网络风险的考虑。 总结 简单回顾上一届的本地事物的内容 全局事物我们也就认为他是分布式事务 XA规范地提出,以及java 使用XA规范实现的JTA 使用Java的编程式事物遇到的不一致问题,当有事物有异常的时候,只能部分

    6910

    Spring中的@Transactional(rollbackFor = Exception.class)属性详解

    异常 如下图所示,我们都知道Exception分为运行时异常RuntimeException和非运行时异常 error是一定会的 ? 对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch并处理,否则程序就不能编译通过。所以,面对这种异常不管我们是否愿意,只能自己去一大堆catch块去处理可能的异常。 在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会,数据库里面的数据也会。 在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也 rollbackForClassName 类名数组,必须继承自Throwable 导致事务的异常类名字数组 noRollbackFor Class对象数组,必须继承自Throwable 不会导致事务的异常类数组

    4.8K21

    Transactional事物注解(十一)

    }cace(e) } 这样的话,事物就会报错了,因为用的是同一个事物,s2 异常之后,就意味着该事物; 总结如下: ○ 如果当前有事物,则挂起该事物,并且创建一个新的事物给自己使用 ○ 总结如下: ○ 如果当前有事务:则开启子事务(嵌套事务),嵌套事务是独立提交或则 ○ 如果当前没有事物,则同 REQUIRED ○ 但是如果主事物提交,则会携带子事物一起提交 ○ 如果主事物 ,则子事物会一起,相反,子事物异常,则父事务可以选择还是提交 以上事物传播类型的含义,在源码中有,翻译成中文就是如上所示的含义。 ● NESTED,在原事物内启动一个内嵌事物 ○ 两个事物有关联 ○ 外部事物,内嵌事物也会 所以他们的不同点的表现是:外部事物是否会影响内部事物。 其他的事物表现都差不多。 事物传播测试 如果要测试事物传播类型的话,可以使用 Junit 来测试,当然是要在之前的 stu 测试服务去测试代码.

    5710

    MySQL innoDB的事务隔离

    读未提交:这个事务还未提交就可以被其他事物所看到的。 串行化:读 会加“读锁” 会加“锁” 当事务发生冲突的时候有锁的存在则会等着这个事务执行完才会执行下一个。 当一个事物进行的时候,每一次更改操作都会有一个记录,[比如下图] graph LR 1update为2-->2update为3 2update为3-->3update为4 3update为4-->当前值 也会拿到出示的数据,如果说这个跟事物时间太长 然后 又来一个事务这个事物的隔离性是其他类型的,比如可重复读的就会继续更改这个值 连续执行了好几个事务 改了好几次,但是刚开始执行的事务未提交,所以说他这个视图是不能被删除的 (删除条件:当系统里面没有整个日志更早的read——view的时候,这个日志就会被删除)做一就会堆积日志,占用大量的内存。 (其实我自己也感觉自己的这个很难理解很不清楚,所以↓) 参考下面的(来自极客专栏): ~~(在可重复读的隔离级别下,如何理解**当系统里没有比这个日志更早的 read-view 的时候**,这个日志就会被删除

    15020

    日常开发踩坑:你的事物真的奏效了吗?

    对于“事务”,很多读者尤其是业务研发通常采用“一笔带过”的处理方式:方法上用注解声明,然后就“安心”的代码去了。 但事物真的奏效了吗?复杂的嵌套事物应该如何处理?正确滚了吗? 实际结果:经过测试,发生异常的情况下,数据库中的数据并未事物并未奏效! 坑点:声明事物的方法中如果自定义了异常捕获catch逻辑,事物将无法。 坑点:声明事物的方法在发生指定抛出的异常类型时,事物无法。 ,那么当子事物,按照之前讲的:主事物做了catch,所以理论上主事物应该不会滚了。

    10820

    MYSQL 必考面试题10道(多选)

    5 Undo log日志,提供操作,是为了满足事物的原子性,关于undo说法正确的是() A.MySQL5.6版本以后支持独立的undo表空间,可设置多个表空间。 8.0之前默认为128个段,启动后不能动态修改。5.7以后可以清理undo log。 B.undo log是为了满足事务的原子性,也可以用来辅助完成事务的持久化。 C.DB_ROLL_PTR为指向写到rollback segment(段)的一条undo log记录。 D.DB_ROW_ID用于索引中,主键和唯一索引就是利用这个值实现。 B.如果redo log file中未提交,binlog file中不存在,会将redo log中的这个未提交事物。 D.如果redo log file中已提交,binlog file中不存在,会将redo log中的这个提交事物

    71731

    读者来稿:想和你聊聊 TCC

    Spring 事物传播行为 在讨论分布式事物之前,我们先把 Spring 事物传播机制过一遍,文章参考自事物传播行为详解 这位大佬的很用心,文末评论区还讲到了一个关于 Spring 事物的一个很重要的特性 是挂起事物它不会。 ) ) 的情况下,虽然在外部事物中try catch 了,但其方法本身所在的事物发生了,该子事物之后会将整个事物标记位记为 rollbackOnly ,当外部事物发现事物被标记为 rollbackOnly 2.3 嵌套性事物事物如果内部事物,不会触发外部事物,但外部事物会导致内部事物。 "); } } 在 test1 中外部事物,导致嵌套事物, user1Service.addNested 和 user2Service.addNested(user2); 均滚了,在

    20650

    重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件场景」

    经常的听到;老师明天就要了你帮我弄弄吧、你给我一下完事我就学这次着急、现在这不是没时间学吗快给我看看。其实看到的类似的还有很多,很纳闷你的着急怎么来的,不太可能,人在家中坐,祸从天上落。 场景模拟;系统发布上线配置 「在本案例中我们模拟系统在发布上线的过程中记录线上配置文件用于紧急」 在大型互联网公司系统的发布上线一定是易用、安全、可处理紧急状况的,同时为了可以隔离线上和本地环境 在后续上线时如果发现紧急问题,系统就会需要回操作,如果执行那么也可以设置配置文件是否。 最后是提供的备忘录操作方法;存放(append)、(undo)、返回(redo)、定向获取(get),这样四个操作方法。 3. 通过上面添加了四次配置后,下面分别进行操作是;1次、再回1次,之后向前进1次,最后是获取指定的版本配置。具体的效果可以参考测试结果。

    29720

    JDBC 到 ORM 的事务实现

    Mybatis 可以使用简单的XML或注解来配置和映射原生信息,将接口和 Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录 Mybatis与Hibernate 如果封装事务存在,并且外层事务抛出异常回,那么内层事务必须,反之,内层事务并不影响外层事务。 ,把servlce也给注册了,但是此时事物还没加载,也就导致后面的事物无法成功注入到service中。 在业务代码中如果抛出RuntimeException异常,事务;但是抛出Exception,事务不回;默认对RuntimeException 如果在加有事务的方法内,使用了try...catch ..语句块对异常进行了捕获,而catch语句块没有throw new RuntimeExecption异常,事务也不会 在类A里面有方法a 和方法b, 然后方法b上面用 @Transactional

    13910

    SpringBoot之解决整合多数据源多事物注解问题

    SpringBoot之解决整合多数据源多事物注解问题 概念:   因为整合了多数据源,就代表我的项目中存在多个事物管理器,这样就不能直接使用@Transactional 修改代码: 修改user2接口 模拟异常,查看事物是否,添加@Transactional ? 启动测试: 访问user2接口报错 2021-01-28 12:36:39,975 [http-nio-8082-exec-3] ERROR (DirectJDKLog.java:175)- Servlet.service found 2: springbootTransactionManager,springbootdtsTransactionManager 因为我们直接使用的@Transactional但是在Spring的事物管理器中却有两个事物管理器 ,这时他就不知道使用哪个了 这里说一下,在Springboot2之后默认就是开始事物的不用单独@EnableTransactionManager了 解决:   在事物的注解中指定事物管理器 指定为springbootTransactionManager

    28830

    Spring MVC Controller层事物注解不生效

    最近在一个管理台页面,是从页面提交多个form到controller层的,这些form要么都能提交成功,要么都失败。 默认spring事务只在发生未被捕获的 runtimeexcetpion时才,spring aop异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行   方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeException()语句,以便让aop捕获异常再去 2.在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动 new SystemException("insert into report config conditions data fail", e); } }     这时候,事物滚了

    46610

    分布式事务解决方案框架(LCN)

    对于事务在执行中发生错误,所有的操作都会被,整个事务就像从没被执行过一样。 其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口,而事务管理器作为全局的调度者,负责各个本地资源的提交和。 XA实现分布式事务的原理如下: 什么是Jta 作为java平台上事务规范JTA(Java Transaction API)也定义了对XA事务的支持,实际上,JTA是基于XA架构上建模的,在JTA 中, 分布式事物解决方案 分布式事物问题,在互联网公司比较常见,例如“”分布式事物解决方案 可以使用全局事物2pc(两段提交协议)、3pc(三段提交协议),消息中间件、tcc、gts、提供接口、分布式数据库 当执行完关闭事务组的方法以后,TxManager将根据事务组信息来通知相应的参与模块提交或事务。

    17050

    MYSQL 必考面试题10道(答案解释)

    5 Undo log日志,提供操作,是为了满足事物的原子性,关于undo说法正确的是() A.MySQL5.6版本以后支持独立的undo表空间,可设置多个表空间。 8.0之前默认为128个段,启动后不能动态修改。5.7以后可以清理undo log。 B.undo log是为了满足事务的原子性,也可以用来辅助完成事务的持久化。 C.DB_ROLL_PTR为指向写到rollback segment(段)的一条undo log记录。 D.DB_ROW_ID用于索引中,主键和唯一索引就是利用这个值实现。 B.如果redo log file中未提交,binlog file中不存在,会将redo log中的这个未提交事物。 D.如果redo log file中已提交,binlog file中不存在,会将redo log中的这个提交事物。 答案:ABC 解释:D.根据2PC,双1模式下,不会存在此种情况。

    2.5K41

    MySQL这些题目你都会吗?

    5、Undo log日志,提供操作,是为了满足事物的原子性,关于undo说法正确的是( ) A.MySQL5.6版本以后支持独立的undo表空间,可设置多个表空间。 8.0之前默认为128个段,启动后不能动态修改。5.7以后可以清理undo log。 B.undo log是为了满足事务的原子性,也可以用来辅助完成事务的持久化。 C.DB_ROLL_PTR为指向写到rollback segment(段)的一条undo log记录。 D.DB_ROW_ID用于索引中,主键和唯一索引就是利用这个值实现。 B.如果redo log file中未提交,binlog file中不存在,会将redo log中的这个未提交事物。 D.如果redo log file中已提交,binlog file中不存在,会将redo log中的这个提交事物。 答案:ABC 解释:D.根据2PC,双1模式下,不会存在此种情况。

    28630

    相关产品

    • 分布式事务 DTF

      分布式事务 DTF

      分布式事务(DTF)是腾讯云自主研发的高性能、高可用的分布式事务中间件,用于提供分布式的场景中,特别是微服务架构下的事务一致性服务。分布式事务 拥抱多种开发框架,支持多种数据源,帮助企业用户轻松管理跨数据库、跨服务事务的部署与可视化管理;配合腾讯微服务平台使用,即可轻松构建、运维大型分布式系统。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券