spring事务问题

问题描述

用了S2SH一年多了,每一层大概什么意思有了皮毛的了解,SPRING在我们系统中主要用到了,事务的控制,事务控制在serverce层,只要在ACTION中调用一个serverce那么这个serverce就控制在一个事务内(通过spring做的控制),但是最近有个需求,需要在serverce层单独在开启个事务,去提交事务,不知道这个应该怎么处理。applicationContext.xml配置<aop:config proxy-target-class="true"><aop:advisorpointcut="execution(public * com.sinosoft.common..*service..*Service*Impl.*(..))"advice-ref="txAdvice" /></aop:config><tx:advice id="txAdvice"><tx:attributes><tx:method name="is*" read-only="true"propagation="SUPPORTS" /></tx:attributes>查询了相关资料,这种配置是采用spring的AspectJ切入点语法。please help! 问题补充:补充下:是在一个大事务中开启另一个事务,不受大事务的影像。

解决方案

在spring中事务有好几种传播特性:1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启新的事物。 2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。 3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。 4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。 5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。 6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常 7.(spring)PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行。按照你目前的需求,你可以选用第四种事务传播特性。
解决方案二:
RequiresNew就满足你的需求

时间: 2024-12-18 22:47:22

spring事务问题的相关文章

详解Spring事务Transaction配置的五种注入方式

前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSource.TransactionManager这两部分只是会根据数据访问方式有所变化,

Spring事务管理高级应用难点剖析: 第3部分

概述 对于应用开发者来说,数据连接泄漏无疑是一个可怕的梦魇.如果存在数据连 接泄漏问题,应用程序将因数据连接资源的耗尽而崩溃,甚至还可能引起数据库的崩溃.数据 连接泄漏像黑洞一样让开发者避之唯恐不及. Spring DAO 对所有支持的数据访问技术 框架都使用模板化技术进行了薄层的封装.只要您的程序都使用 Spring DAO 模板(如 JdbcTemplate.HibernateTemplate 等)进行数据访问,一定不会存在数据连接泄漏的问题 ― ― 这是 Spring 给予我们郑重的承诺!

Spring事务管理高级应用难点剖析: 第2部分

联合军种作战的混乱 Spring 抽象的 DAO 体系兼容多种数据访问技术,它们各有特 色,各有千秋.像 Hibernate 是非常优秀的 ORM 实现方案,但对底层 SQL 的控制不太方便: 而 iBatis 则通过模板化技术让您方便地控制 SQL,但没有 Hibernate 那样高的开发效率:自 由度最高的当然是直接使用 Spring JDBC 莫属了,但是它也是最底层的,灵活的代价是代码的 繁复.很难说哪种数据访问技术是最优秀的,只有在某种特定的场景下,才能给出答案.所以 在一个应用中,往

Spring事务管理高级应用难点剖析,第1部分

概述 Spring 最成功,最吸引人的地方莫过于轻量级的声明式事务管理,仅此一点,它就宣告了 重量级 EJB 容器的覆灭.Spring 声明式事务管理将开发者从繁复的事务管理代码中解脱出来 ,专注于业务逻辑的开发上,这是一件可以被拿来顶礼膜拜的事情.但是,世界并未从此消停 ,开发人员需要面对的是层出不穷的应用场景,这些场景往往逾越了普通 Spring 技术书籍的 理想界定.因此,随着应用开发的深入,在使用经过 Spring 层层封装的声明式事务时,开发 人员越来越觉得自己坠入了迷雾,陷入了沼泽,

Spring事务配置的五种方式

前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. 总结如下: Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分. DataSource.TransactionManager这两部分只是会根据数据访问方式有所变化,

Spring事务探索

Spring自建事务管理模块.而且这个事务管理是一个抽象设计,可以应用到很多场合,包括普通的DataSource,jta,jms和hibernate上. 要正确使用spring的事务,首先需要了解spring在事务设计上的一些概念 统观spring事务,围绕着两个核心PlatformTransactionManager和TransactionStatus PlatformTransactionManager直译过来就是平台相关事务,这里的平台指的是"事务源",包括刚才我说的DataSo

详解spring事务属性

Spring声明式事务让我们从复杂的事务处理中得到解脱.使得我们再也无需要去处理获得连接.关闭连接.事务提交和回滚等这些操作.再也无需要我们在与事务相关的方法中处理大量的try-catch-finally代码. 我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性.事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成.我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性. Spring在TransactionDefinition接口中定义这些属性,

spring事务详解

Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考. Spring声明式事务让我们从复杂的事务处理中得到解脱.使得我们再也无需要去处理获得连接.关闭连接.事务提交和回滚等这些操作.再也无需要我们在与事务相关的方法中处理大量的try-catch-finally代码.我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性.事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成.我们在进行事

求助spring事务异常,报错报了昨天一天了55555,在线等啊

问题描述 求助spring事务异常,报错报了昨天一天了55555,在线等啊 就是一直都报这个错,昨天一天都没解决,感觉是确实一个方法,NoSuchMethodError:org.springframework.jdbc.datasource.DataSourceTransactionManager.determineTimeout,我导入源码看不到这个方法,只有一个调用它的参数,,,求大牛或者神牛帮帮忙,拜托了....困扰了一天啊,,,,!!!整个人都不好了,在线等!! 报错信息: Except

spring事务回滚只能配在service层吗。为什么我想在Test中添加事务不能进行回滚呢

问题描述 spring事务回滚只能配在service层吗.为什么我想在Test中添加事务不能进行回滚呢 <tx:advice id="txAdvice2" transaction-manager="txManager"> <tx:attributes> <tx:method name="inserttwo*" propagation="REQUIRED"/> </tx:attribut