`
mzh_2008beijing
  • 浏览: 233969 次
  • 性别: 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; 
	}
分享到:
评论

相关推荐

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务管理的基本概念。事务是一组数据库操作,这些操作要么全部执行,要么全部回滚,...

    Spring声明式事务@Transactional知识点分享

    "Spring声明式事务@Transactional知识点分享" 在 Spring 框架中,@Transactional 注解是实现声明式事务的关键。通过 @Transactional 注解,可以指定事务的传播行为、隔离级别、读写控制等属性。 首先,@...

    后端 Java Spring Data Jpa @Transactional 介绍

    在Java后端开发中,Spring框架提供了强大的事务管理能力,特别是在使用Spring Data JPA时,`@Transactional`注解使得事务处理变得简单易用。这个注解是Spring框架中的核心部分,它允许开发者声明性地控制事务边界,...

    Spring3事务管理——使用@Transactional 注解.rar

    `@Transactional`注解来自`org.springframework.transaction.annotation`包,它是Spring对声明式事务管理的主要支持。这个注解可以应用在类或方法级别,用来定义事务的边界。当注解在类级别时,所有该类的公共方法都...

    springboot中事务管理@Transactional的注意事项与使用场景

    @Transactional 是 Spring 框架提供的一个注解,用于声明式事务管理。它可以将事务管理机制应用于 Java 方法上,以便在方法执行过程中发生异常时回滚事务。 使用 @Transactional 的注意事项 1. 只能应用于公共方法...

    Spring中@Transactional事务回滚(含实例

    在Spring框架中,`@Transactional`注解是用于标记事务管理的重要工具,它使得开发者能够方便地在代码中声明式地控制事务的边界。本文将深入解析`@Transactional`的事务回滚机制,并通过实例来详细讲解其工作原理,...

    Spring @Transactional工作原理详解

    在Spring框架中,`@Transactional`注解是一个强大的工具,用于声明式地管理事务。它使得开发者无需显式地在代码中控制事务的开始、提交和回滚,从而提高了代码的可读性和可维护性。下面我们将深入探讨`@...

    Spring声明式事务和@Aspect的拦截顺序问题的解决

    Spring 声明式事务是指使用 Spring 框架提供的声明式事务管理机制,以便简化事务处理的复杂度。声明式事务可以通过配置文件或注解的方式来实现事务管理。例如,使用 @Transactional 注解来标注事务方法。 @Aspect ...

    spring声明式事务处理demo

    首先,我们要理解Spring事务管理的两种主要方式:编程式事务管理和声明式事务管理。编程式事务管理通常通过AOP(面向切面编程)的TransactionTemplate或PlatformTransactionManager接口直接在代码中控制事务,而声明...

    Spring Data JPA系列4——Spring声明式事务处理与多数据源支持.doc

    Spring 框架提供了声明式事务处理机制,通过使用@Transactional 注解来标注需要事务处理的方法。这样,业务代码中不需要再关心事务的处理,Spring 框架将自动处理事务的提交和回滚。 三、@Transactional 注解 @...

    spring声明式事务管理配置方式

    在提供的链接中,博主可能详细解释了这些概念,并给出了实际的应用示例,包括如何配置和使用声明式事务管理。通过阅读这个博客,你可以更好地理解Spring声明式事务管理的工作原理及其在实际项目中的应用。在压缩包...

    spring的@Transactional注解详细用法1

    总的来说,Spring的`@Transactional`注解为开发者提供了方便且强大的声明式事务管理能力。它简化了事务控制,让开发者能够专注于业务逻辑,而无需关心事务的细节。尽管编程式事务管理可以提供更细粒度的控制,但声明...

    Spring声明式事务处理

    在Java中,通常使用JDBC的Connection对象来管理事务,但在Spring框架中,我们可以使用声明式事务处理来简化这一过程。 声明式事务处理的核心是基于AOP(面向切面编程)的,Spring通过在事务边界添加通知(advice)...

    Spring中的@Transactional事物回滚实例源码

    首先,`@Transactional`是Spring提供的一个编程式事务管理方式,它允许我们在方法上声明事务属性,如传播行为、隔离级别、读写模式以及是否回滚。例如: ```java @Service public class UserService { @...

    浅谈Spring中@Transactional事务回滚及示例(附源码)

    为了使用基于@Transactional的事务管理,需要在Spring中进行配置。下面是一个简单的示例: 首先,需要在Spring的配置文件中添加tx名字空间: ```xml <beans xmlns="http://www.springframework.org/schema/beans...

    @Transactional实现原理.txt

    @Transactional实现原理.txt

    spring-@Transactional-jar

    spring事务管理注解jar,spring-tx-3.2.4.RELEASE.jar,导入项目即可

    注解实现声明式事务管理

    在Spring中,主要使用以下几种注解来实现声明式事务管理: 1. `@Transactional`:这是最常用的注解,用在方法上,表示该方法在一个事务上下文中执行。它包含了一些可选属性,如`propagation`(事务传播行为)、`...

    深入学习Spring Boot排查 @Transactional 引起的 NullPointerException问题

    在 Spring Boot 应用程序中,我们可以使用 @Transactional 注解来声明事务。例如,在 StudentDao 类中,我们使用 @Transactional 注解来声明事务: ```java @Component @Transactional public class StudentDao { ...

Global site tag (gtag.js) - Google Analytics