`
seaman
  • 浏览: 19780 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

嵌套事务

阅读更多
//serviceA.java
methodA(){
	for(i<n){
		methodB();
	}
	//throw an exception here.
}
//serviceB.java
methodB(){
	List list = query("select from Subject where ...");
	for(list){
		otherBusiness(subject);
		delete(subject);
	}
}

环境:框架SSH,methodA、methodB事务控制使用
<prop key="*">PROPAGATION_REQUIRED,-java.lang.Throwable</prop>

表象:在methodA中循环了n次methodB,执行到异常处,发现methodB被提交了n-1次,最后一次methodB被会滚
原因:对Subject的操作应该是在对该表的查询时query(sql)被强制提交了
求教:我目前的做法是将query(sql)操作提到methodA,求教更好的解决方法
新年快乐!
分享到:
评论
4 楼 雁行 2008-02-14  
两个事务的传输级别都设置成 PROPAGATION_REQUIRED即可。
跟循环多少次没有关系。
http://starrystarry-night.iteye.com/admin/blogs/160104
3 楼 lggege 2008-02-05  
Spring 提供了两种高级的切入点,
ComposablePointCut 组合切入点。
ControlFlowPointCut 流程切入点。

ControlFlowPointCut 就是 为特定类下的指定方法(或方法集), 通知该方法内部调用的所有方法。

可以去试试。
2 楼 seaman 2008-02-04  
methodA、methodB是两个service中的方法,serviceB注入到serviceA
1 楼 daquan198163 2008-02-04  
在类的内部直接调用自己的方法,是不经过SpringAOP事务代理的,
所以,所有这些操作都在methodA的事务内,不存在什么嵌套事务问题
前n-1次操作也不应该提交,你看看是不是别的问题造成

相关推荐

    Go-Sqalx-sqlx嵌套事务

    当我们谈到“Go-Sqalx-sqlx嵌套事务”时,我们关注的是在SQLx中如何实现数据库事务的嵌套处理。 首先,让我们理解什么是事务。在数据库管理中,事务是一系列数据库操作的逻辑单元,这些操作要么全部成功,要么全部...

    sqlserver嵌套事务总结

    该文档从sqlserver事务讲起,详述ACID,@@trancount,在嵌套事务中使用保存点,命名事务等

    Oracle数据完整性嵌套事务调用分析研究

    Oracle 数据完整性嵌套事务调用分析研究 Oracle 数据库中,数据完整性是指数据的正确性、完整性和一致性。为了保护数据的完整性,我们可以使用多种方法,例如数据表的主键约束、外键约束、触发器等等。在处理数据...

    论文研究-嵌套事务的正确性及锁协议.pdf

    嵌套事务是指在事务的执行过程中可以包含其他事务的事务模型,它是一种扩展事务模型。嵌套事务广泛应用于数据库系统、工作流管理系统以及分布式系统中,以支持复杂的业务流程。嵌套事务模型的一个重要特性是子事务...

    嵌套事务的回滚与提交.pdf

    嵌套事务是数据库管理系统中的一种高级事务处理机制,它允许在一个事务中嵌套另一个事务。这种机制对于处理复杂的业务逻辑和确保数据一致性至关重要。本文主要讨论了嵌套事务的回滚与提交,以及事务保存点的使用。 ...

    springboot mybatis多数据源加事务嵌套

    springboot mybatis多数据源加事务嵌套 事务之间的调用 回滚 亲测可用 定义2个库分别建立 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户编号', `user_name` varchar(25) ...

    A类B类C类嵌套事务问题相关类

    当我们谈论"A类B类C类嵌套事务问题相关类"时,这通常涉及到在Java编程环境中处理事务的一系列类或者方法。Java中的事务管理主要用于确保数据的一致性和完整性,即使在系统出现故障或异常情况下也是如此。 在Java中...

    MySQL嵌套事务所遇到的问题

    MySQL是支持嵌套事务的,但是没多少人会这么干的…. 前段时间在国外看到一些老外在争论MySQL嵌套事务的场景必要性。 逗死我了, 这嵌套的鬼畜用法还有啥场景必要性。 跟以前的dba同事聊过, 得知,在任何场景下都...

    PHP中实现MySQL嵌套事务的两种解决方案

    三、Laravel的解决方案Laravel框架也提供了对嵌套事务的支持。在Laravel中,你可以使用`DB::beginTransaction()`开始一个事务,`DB::commit()`提交事务,以及`DB::rollback()`回滚事务。但是,Laravel是如何处理嵌套...

    sqalx:sqlx的嵌套事务

    斯卡尔克斯 sqalx(发音为“ scale-x”)是在之上构建的库,它允许无缝创建嵌套事务,并避免考虑是否在事务内调用函数。 使用sqalx,您可以轻松创建可重用和可组合的函数,这些函数可在事务内或事务外调用,并可自行...

    KVDB:一个简单的内存键值数据存储系统,支持嵌套事务。 该项目是用Java开发并在Eclipse(Luna)中测试的

    KVDB 一个简单的内存键值数据存储系统,支持嵌套事务。 该项目使用 Java 开发并在 Eclipse (Luna) 中测试。基本操作SET:给一个键设置一个值GET:获取一个键的值DELETE:从数据存储中删除键值对COUNT:统计特定值的...

    Key-Value-REPL:这是一个命令行REPL(读取-评估-打印循环)应用程序,用于驱动简单的内存键值存储系统。 该系统还应允许嵌套事务。 然后可以提交或中止事务

    该系统还应允许嵌套事务。 然后可以提交或中止事务。 示例运行 $我的程序 写一个你好 阅读一个 你好 开始 再次打个招呼 阅读一个 再次问好 开始 删除一个 阅读一个 找不到密钥:a 犯罪 阅读一个 找不到密钥:a 再...

    SQL事务设置SET XACT_ABORT后正确回滚

    SET XACT_ABORT { ON | OFF }  当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,...不需要该选项的情况是提供程序支持嵌套事务时。有关更多信息,请参见分布式查询和分布式事务。  SET XACT_

    Spring事务传播机制.docx

    在了解嵌套事务之前,可以先看下单个事务在 Spring 中的处理流程,以便后面可以更清晰地认识嵌套事务的逻辑。Spring 事务使用 AOP 的机制实现,会在@Transactional 注解修饰的方法前后分别织入开启事务的逻辑,以及...

    springboot多数据源即分布式事务解决方案,添加对多线程的支持

    在现代企业级应用开发中,数据源的多样化和分布式事务的处理是常见需求。Spring Boot作为Java领域的一个轻量级框架,提供了强大的支持来解决这些问题。本教程将深入探讨如何在Spring Boot环境下实现多数据源操作及...

    SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”

    误区 #26: SQL Server中存在... 但是,嵌套事务并不是真正的“嵌套”,对于嵌套事务来说SQL Server仅仅能够识别外层的事务。嵌套事务是日志不正常增长的罪魁祸首之一因为开发人员以为回滚了内层事务,仅仅是回滚内层

Global site tag (gtag.js) - Google Analytics