`
keren
  • 浏览: 1573822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring 嵌套事务回滚条件.

阅读更多
1. 我们要设置 transactionManager 的 nestedTransactionAllowed 属性为 true, 注意, 此属性默认为 false!!!

JdbcTransactionObjectSupport 告诉我们必须要满足两个条件才能 createSavepoint :
 
2. java.sql.Savepoint 必须存在, 即 jdk 版本要 1.4+
3. Connection.getMetaData().supportsSavepoints() 必须为 true, 即 jdbc drive 必须支持 JDBC 3.0

确保以上条件都满足后, 你就可以尝试使用 PROPAGATION_NESTED 了.
  • 大小: 36.2 KB
分享到:
评论

相关推荐

    Spring事务传播机制.docx

    当我们在使用 Spring 所提供的事务功能时,如果是仅仅处理单个的事务,是比较容易把握事务的提交与回滚,不过一旦引入嵌套事务后,多个事务的回滚和提交就会变得复杂起来,各个事务之间是如何相互影响的,是一个值得...

    Spring Boot数据库事务控制.zip

    3. **事务回滚规则**:默认情况下,如果在@Transactional注解的方法中抛出未检查异常(继承自RuntimeException的异常)或者Error,Spring会自动回滚事务。对于受检查异常(非RuntimeException),需要显式地声明需要...

    SpringBoot的事务使用和回滚功能讲解.docx

    因此,为了确保事务回滚,你需要在`catch`块中重新抛出异常,或者在`finally`块中显式调用手动回滚的方法。特别要注意,如果`try-catch`块包含在`finally`中且在`finally`中有返回操作,那么catch中的异常会被返回...

    Spring事务传播Demo.zip

    7. **PROPAGATION_NESTED**:如果当前存在事务,则在一个嵌套事务内执行;如果不存在,则行为与PROPAGATION_REQUIRED相同。 在"Spring事务传播Demo"中,我们可能看到如何在不同传播行为下,一个事务方法被另一个...

    Spring事务源码解读.doc

    默认情况下,如果在事务方法中抛出未检查异常(继承自`RuntimeException`的异常)或`Error`,Spring会自动回滚事务。而对于受检查异常(继承自`Exception`但不是`RuntimeException`的异常),如果不指定`rollback...

    基于java的企业级应用开发:Spring事务管理概述.ppt

    传播行为是事务管理的关键概念,它定义了在一个方法中如何处理嵌套事务。默认的传播行为是REQUIRED,意味着如果已有事务,则加入到当前事务;如果没有,则新建一个事务。 3. **TransactionStatus**: ...

    Spring4--3.jdbcTemplate事务

    - **事务传播行为**:定义了如何在嵌套事务中处理事务边界,如REQUIRED(默认,如果已有事务则加入,没有则新建)、REQUIRES_NEW(始终新建一个事务)等。 在实际应用中,通常会结合使用JdbcTemplate和声明式事务...

    spring事务总结.docx

    然而,在实际开发过程中,经常会遇到一些关于Spring事务的问题,如事务失效、事务回滚、大事务问题以及编程式事务等。本文将深入探讨这些问题,并给出相应的解决方案。 #### 一、事务不生效的原因及解决办法 1. **...

    Spring中事务的传播属性详解

    嵌套事务允许独立于外部事务的回滚,但在外部事务回滚时,嵌套事务也会回滚。 #### 五、总结 通过上述分析,我们可以看出Spring中的事务传播行为提供了丰富的选项,可以帮助开发者精确地控制事务的执行逻辑。正确...

    通过实际案例摸清楚Spring事务传播的行为.docx

    嵌套事务会在外部事务的回滚范围内进行提交或回滚,可以提供更细粒度的控制。 为了更好地理解这些行为,我们创建一个Spring Boot项目,并编写相关的DAO接口和实体类。例如,User实体类包含id、name和email属性,并...

    Spring添加声明式事务.docx

    - `NESTED`:如果当前存在事务,则新建一个嵌套事务;如果不存在,则新建一个事务。 ### 四、事务的其他属性 除了传播行为外,`@Transactional`还可以配置隔离级别(`isolation`)、回滚规则(`rollbackFor`、`...

    SpringJDBC注解事务.zip

    - 默认情况下,只有运行时异常(继承自`RuntimeException`的异常)会导致事务回滚,非运行时异常(受检查的异常)不会导致回滚。 - 通过`rollbackFor`和`noRollbackFor`属性可以自定义哪些异常需要或不需要触发...

    Spring Nested事务简单案例

    4. **嵌套事务的深度**:理论上,你可以无限嵌套事务,但实际应用中应避免过深的嵌套,因为它可能导致性能问题,并增加代码的复杂性。 5. **事务隔离级别**:Nested事务继承了父事务的隔离级别,所以不需要额外设置...

    spring事务管理.rar

    即使当前存在事务也会暂停)、`NOT_SUPPORTED`(总是暂停当前事务)、`NEVER`(禁止事务)和`NESTED`(如果当前存在事务,则在嵌套事务内执行,否则新建事务)。 - ** isolation**:事务的隔离级别,包括`DEFAULT`...

    02.Spring支持的常用数据库事务传播属性和事务隔离级别.zip

    嵌套事务会在内部创建一个保存点,如果外层事务回滚,内层事务也会回滚到保存点。 二、事务隔离级别 事务隔离级别是控制并发操作时如何避免脏读、不可重复读和幻读的关键。Spring支持四种标准的SQL事务隔离级别: ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 ...

    Spring事务管理Demo

    - `NESTED`:如果当前存在事务,则在嵌套事务内运行;如果没有事务,则行为类似于`REQUIRED`。 Spring事务管理的隔离级别包括: - `DEFAULT`:使用数据库的默认隔离级别。 - `READ_UNCOMMITTED`:最低隔离级别,...

    Spring的7 种事务传播行为.pdf

    嵌套事务允许在一个事务中创建子事务,如果主事务回滚,所有子事务也会回滚。 事务的四大特性(ACID)是事务处理的基础,它们是: - **原子性(Atomicity)**:事务中的所有操作要么全部成功,要么全部失败,不...

    Spring 2.0 开发参考手册

    9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...

    Spring的7 种事务传播行为.docx

    嵌套事务允许在一个事务内部执行子事务,子事务有自己的回滚规则,但最终结果会反映在父事务中。 事务的ACID特性是数据库管理系统保证数据一致性的基石,它们分别是: - **原子性(Atomicity)**:事务中的所有操作...

Global site tag (gtag.js) - Google Analytics