SSH整合,spring事务管理不回滚问题
2012-04-28 17:01
501 查看
Spring的事务回滚,当且仅当捕获到RuntimeException类型异常时,才会回滚,对普通Exception异常无效。
以下是我Service层捕获异常,并抛出RuntimeException异常到Action层:
spring中事务管理配置:
以下是我Service层捕获异常,并抛出RuntimeException异常到Action层:
@Override public void lock(String id) throws RuntimeException { try { this.loginUserDao.lock(id); LoginUser user = this.loginUserDao.findById(id); user.setSex("捕捉到异常后,抛出RuntimeException类型的异常"); this.loginUserDao.save(user); } catch (Exception e) { // 捕捉到异常后,抛出RuntimeException类型的异常。 // spring 事务只在捕足到RuntimeException异常时,才会回滚,对Exception无效 throw new RuntimeException(e.getMessage()); } }
spring中事务管理配置:
<!-- 为sessionFactory定义事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <!-- 定义事务拦截器 --> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <!-- 为事务拦截器注入一个事务管理器 --> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <!-- 定义事务传播属性 PROPAGATION_REQUIRED:表示如果事务不存在,则创建一个新事务,如果存在,则加入到该事务。 --> <props> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="add*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="lock*">PROPAGATION_REQUIRED</prop> <prop key="unLock*">PROPAGATION_REQUIRED</prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <!-- 定义拦截器要拦截的bean --> <bean id="autoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <!-- 拦截所有名字以Service结尾的bean进行代理 --> <value>*Service</value> </list> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> </list> </property> </bean>
相关文章推荐
- spring 声明式事务管理在真实的Service和单元测试时的回滚情况,需要注意的问题,jpa为例子
- mybatis整合spring、springmvc时业务层无法进行事务回滚问题解决
- 关于Spring事务管理无法回滚的问题
- spring管理事务异常时事务未回滚问题笔记
- 实践中遇到Ibatis和spring整合事务不回滚的问题解决
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之五:Hibernate的事务管理、手动回滚
- 【Java EE 学习 53】【Spring学习第五天】【Spring整合Hibernate】【Spring整合Hibernate、Struts2】【问题:整合hibernate之后事务不能回滚】
- spring2.5整合ibatis2.3事务管理时遇到的问题以及需要的jar包
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之四:JdbcTemplate的事务管理
- ssh整合随笔(注解方式,Spring 管理action)
- spring和hibernate整合后手动管理事务工具类
- SSH整合时,基于注解的事务管理的配置方式
- 【Spring十】使用OpenSessionInView解决懒加载问题及Spring管理下的session和事务
- mybatis与spring整合事务管理
- 整合ssh事务问题
- 关于Spring整合Hibernate事务问题
- 关于Spring事务回滚的问题
- 关于Spring 声明式事务处理时,throws exception不回滚的问题
- spring整合 mybatis 事务管理不生效原因
- spring的事务回滚问题