`

PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED區別

 
阅读更多

PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED两种传播机制的是容易混淆的。
   
   1. 开启事务的多少,PROPAGATION_REQUIRES_NEW会开启很多事务,外部事务挂起,里面的事务独立执行,对性能的损耗较大。PROPAGATION_NESTED为父子事务,实际上是借助jdbc的savepoint实现的,属于同一个事物。
2. PROPAGATION_NESTED的回滚可以总结为,子事务回滚到savepoint,父事务可选择性回滚或者不不滚;父事务回滚子事务一定回滚。

PROPAGATION_NESTED如一下一樣

在oracle數據庫中

CREATE OR REPLACE PROCEDURE pro_test(fbuildareac IN VARCHAR2)
AS
BEGIN
update t_broker_house set fhousecondition=fid  where fid='ed7c17ec-ca2a-4fe7-b7f7-f8111c102ade';
savepoint a;
update t_broker_house set fhousecondition=fid  where fid='f456255f-1934-424f-81fb-6654829d4651';
rollback to a;
update t_broker_house set fhousecondition=fid  where fid='bac6e97b-05f4-47db-b849-75d7d72d5ba6';
commit;
    DBMS_OUTPUT.put_line (fbuildareac);
END pro_test;

begin
  pro_test('123');
 end;

第1個和第3個是可以修改成功的 第二個事务回滚

 

分享到:
评论

相关推荐

    spring基础学习介绍

    例如,PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED的区别在于前者创建完全独立的新事务,而后者创建的是依赖于外部事务的子事务。在PROPAGATION_NESTED中,子事务的提交或回滚与外部事务紧密关联。 另外,当...

    深入理解Spring事务的传播行为

    当`ServiceB.methodB`的传播级别设置为`PROPAGATION_REQUIRES_NEW`时,无论`ServiceA.methodA`是否在事务中,`ServiceB.methodB`都会启动一个新的独立事务,这样即使`ServiceB.methodB`的事务提交了,如果`ServiceA....

    spring事物管理

    实际上,任何PROPAGATION_REQUIRED或PROPAGATION_REQUIRES_NEW都可以处理方法的嵌套调用。当两个方法都在同一事务范围内运行时,它们的行为与PROPAGATION_REQUIRED相同,它们将共享同一事务,确保所有操作要么全部...

    Spring事务传播原理及数据库事务操作原理.rar

    Spring定义了七种事务传播行为:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER和PROPAGATION_NESTED。每种行为都...

    Spring事务传播属性

    例如,PROPAGATION_REQUIRED适合大部分需要事务控制的操作,而PROPAGATION_REQUIRES_NEW常用于需要独立事务环境的操作,比如发邮件、记录日志等。PROPAGATION_NESTED则用于需要部分独立事务的场景,它允许在保持现有...

    spring事务传播

    例如,在处理支付业务时,可能会选择`PROPAGATION_REQUIRES_NEW`,以确保支付操作在一个独立的事务中完成,即使外部事务失败,支付状态也能正确保存。而在读取数据时,可能选择`PROPAGATION_SUPPORTS`,允许在已有...

    Spring中事务的传播属性详解

    4. **PROPAGATION_REQUIRES_NEW**:无论当前是否存在事务,都创建一个新的事务,并挂起当前事务。 5. **PROPAGATION_NOT_SUPPORTED**:以非事务方式执行操作;如果当前存在事务,则挂起当前事务。 6. **PROPAGATION_...

    事务传播特性了解事务的几种传播特性

    - **PROPAGATION_REQUIRES_NEW**:此行为总是创建一个新的事务来执行当前方法,即使当前已经存在事务,也会挂起当前事务并创建一个新的事务。这种方式适用于那些需要独立事务的操作,即使它们被调用在一个更大的事务...

    Spring+Struts2+Spring3+Hibernate3三大框架整合

    在实际开发中,例如在删除客户和订单的场景下,可以使用PROPAGATION_REQUIRES_NEW,确保订单删除失败时,不会影响客户删除操作的回滚。PROPAGATION_NESTED则依赖于JDBC3.0的保存点技术,可以在子事务失败时恢复到...

    Spring事务传播Demo.zip

    例如,一个PROPAGATION_REQUIRED的方法调用了一个PROPAGATION_REQUIRES_NEW的方法,那么第二个方法将在新的独立事务中执行,即使第一个方法已经在一个事务中。 SSH,通常指的是Spring、Struts和Hibernate三个开源...

    spring 事务传播 demo

    例如,一个服务类中的某个方法可能使用`@Transactional(propagation = Propagation.REQUIRES_NEW)`注解,这样无论调用它的方法是否在事务中,都会开启一个新的独立事务。 Spring的事务管理器,如...

    Spring事务原理、Spring事务配置的五种方式

    PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER--以非事务方式执行,如果...

    事务传播特性&事务隔离级别

    4. PROPAGATION_REQUIRES_NEW:总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。 5. PROPAGATION_NOT_SUPPORTED:总是非事务地执行,并挂起任何存在的事务。 6. PROPAGATION_NEVER:总是非...

    Java面试资源“80%的offer掌握在20%的人手中”

    4. PROPAGATION_REQUIRES_NEW:总是创建新的事务,无论当前是否存在事务,原有事务会被挂起。 5. PROPAGATION_NOT_SUPPORTED:在非事务环境中执行,如果当前有事务,就挂起。 6. PROPAGATION_NEVER:不允许在事务中...

    TransactionDemo.7z

    例如,一个服务方法可能被配置为`@Transactional(propagation = Propagation.REQUIRES_NEW)`,这意味着即使在调用它的方法已经在一个事务中,它也会启动一个新的独立事务。 此外,`Spring事务`不仅涉及传播特性,还...

    spring事务的传播特性.pptx

    4. **Propagation_REQUIRES_NEW**:总是开启一个新的事务,如果当前存在事务,则把当前事务挂起。在场景六中,`AccountServiceImpl`的方法标记为`REQUIRES_NEW`,无论调用它的方法是否有事务,都会创建一个新的独立...

    主题:详解spring事务属性.doc

    其他如`PROPAGATION_SUPPORTS`、`PROPAGATION_MANDATORY`、`PROPAGATION_REQUIRES_NEW`、`PROPAGATION_NOT_SUPPORTED`、`PROPAGATION_NEVER`和`PROPAGATION_NESTED`分别有不同的应用场景和策略。 其次,事务的隔离...

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

    4. **PROPAGATION_REQUIRES_NEW**:无论当前是否存在事务,都会新建一个事务并在其中执行方法。原有的事务会被挂起,直到该方法执行完毕后再恢复。这种方式常用于需要独立事务操作的场景,例如支付交易。 5. **...

    spring事务管理机制资料.zip

    其他如PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER和PROPAGATION_NESTED等都有各自的适用场景。 在实际应用中,Spring事务管理还可以与其他功能结合使用,如...

Global site tag (gtag.js) - Google Analytics