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

Spring声明式事务@Transactional的使用陷阱

 
阅读更多
在Spring的声明式事务使用过程中,是否遇到过@Transactional不起作用的情况?请看代码:
@Transactional(propagation=Propagation.REQUIRED) 
	public TradeData placeTrade(TradeData trade){ 
		try { 
			insertTrade(trade); //方法1
			updateAcct(trade); //方法2
			return trade; 
		} catch (SQLException ex) { 
			//log the error throw ex; 
		}
	}

上述代码中,@Transactional会起到织入事务管理的作用吗?
答案是否。
原因是:运行时异常(未捕获的异常)会强迫整个事务逻辑单元回滚,但是被捕获的异常则不会。
所以,要想让@Transactional起作用,则需在实际逻辑处理中,把遇到的异常抛出。上面的例子可以这么写:
@Transactional(propagation=Propagation.REQUIRED) 
	public TradeData placeTrade(TradeData trade) throws SQLException{ 
		insertTrade(trade); //方法1
		updateAcct(trade); //方法2
		return trade; 
	}
分享到:
评论

相关推荐

    day4-Spring JdbcTemplate & 声明式事务.md

    ### Spring JdbcTemplate与声明式事务知识点详解 #### JdbcTemplate基本使用概述 JdbcTemplate是Spring框架提供的用于简化JDBC API操作的对象。它通过提供一个高级抽象层来减少编码工作量,并帮助开发者避免处理...

    Spring事务不生效.pdf

    在同一个方法中同时使用了@Transactional注解和编程式事务管理(如TransactionTemplate),可能导致事务失效。确保只选择一种方式进行事务管理。 6. 事务传播属性配置不当: @Transactional注解中的propagation属性...

    无处不在的Spring AOP事务及踩过的坑

    Spring通过AOP(面向切面编程)提供了一种声明式事务管理方式,允许开发者将事务规则与业务逻辑分离,提高了代码的可读性和可维护性。本文将深入探讨Spring AOP事务管理的核心概念、配置、以及可能遇到的问题和解决...

    Java And 数据库事务

    Spring框架通过`DataSourceTransactionManager`实现了对JDBC事务的支持,开发者可以通过编程式或声明式的方式控制事务。 2. **对Hibernate/JPA事务的支持** - **Hibernate**: Spring通过`...

    Spring 3.x企业应用开发实战

    5. **事务管理**:Spring的声明式事务管理使得事务处理变得简单,无需在代码中显式控制。书中会介绍如何配置事务管理器,以及@Transactional注解的使用。 6. **Spring与其他框架集成**:Spring的开放性使其能够与...

    Java事物设计策略

    Spring框架广泛支持声明式事务管理,通过@Transactional注解可以轻松指定事务属性,如传播行为、隔离级别和回滚规则。 ### XA事务处理 对于涉及多个资源管理器的分布式事务,XA协议是实现两阶段提交的关键。两阶段...

Global site tag (gtag.js) - Google Analytics