Spring编程式事务管理

本文内容纲要:

- 两种Spring事务管理方式:编程式、声明式。

- 两者不同点

- 编程式事务TransactionTemplate讲解

- 当业务复杂时,比如请求外部地址都需要用编程式事务来做业务

————————————————————————————————

版权声明:本文为CSDN博主「工作QQ感冒的石头」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_39291929/article/details/88716104

————————————————————————————————

两种Spring事务管理方式:编程式、声明式。

Spring提供了两种声明式事务管理,分别是AOP切面和注解@Transactional

Spring提供两种方式的编程式事务管理,分别是:使用TransactionTemplate和直接使用PlatformTransactionManager。

两者不同点

  1. 声明式事务最大的优点就是不需通过编程的方式而进行管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明,便可将事务规则应用到业务逻辑中。
  2. 声明式事务不足的地方在于,与编程式事务相比,只能作用到方法级别,无法像编程式事务那样可以作用到代码块级别。

编程式事务TransactionTemplate讲解

使用TransactionTemplate 不需要显式地开始事务,甚至不需要显式地提交事务。这些步骤都由模板完成。但出现异常时,应通过TransactionStatus 的setRollbackOnly 显式回滚事务。

TransactionTemplate 的execute 方法接收一个TransactionCallback 实例。Callback 也是Spring 的经典设计,用于简化用户操作, TransactionCallback 包含如下方法。

  • Object dolnTransaction(TransactionStatus status)

    该方法的方法体就是事务的执行体。

    如果事务的执行体没有返回值,则可以使用TransactionCallbackWithoutResultl类的实例。这是个抽象类,不能直接实例化,只能用于创建匿名内部类。它也是TransactionCallback 接口的子接口,该抽象类包含一个抽象方法:

  • void dolnTransactionWithoutResult(TransactionStatus status)该方法与dolnTransaction 的效果非常相似,区别在于该方法没有返回值,即事务执行体无须返回值。

example:

transactionTemplate.execute(new TransactionCallback() { 

public Object doInTransaction(TransactionStatus status) {

try{

}

catch (Exception e) {

status.setRollbackOnly();

}

});

当业务复杂时,比如请求外部地址都需要用编程式事务来做业务

本文内容总结:两种Spring事务管理方式:编程式、声明式。,两者不同点,编程式事务TransactionTemplate讲解,当业务复杂时,比如请求外部地址都需要用编程式事务来做业务,

原文链接:https://www.cnblogs.com/platinumcat/p/13441614.html

以上是 Spring编程式事务管理 的全部内容, 来源链接: utcz.com/z/362797.html

回到顶部