广告
返回顶部
首页 > 资讯 > 精选 >spring的@Transactional注解用法解读
  • 370
分享到

spring的@Transactional注解用法解读

2023-05-30 16:05:50 370人浏览 八月长安
摘要

概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务api提供一致的编程模型,比如JTA(Java Transaction

概述

事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。

spring Framework对事务管理提供了一致的抽象,其特点如下:

为不同的事务api提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects)

支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用

提供比其他事务API如JTA更简单的编程式事务管理API

与spring数据访问抽象的完美集成

事务管理方式

spring支持编程式事务管理和声明式事务管理两种方式。

编程式事务管理使用TransactionTemplate或者直接使用底层的PlatfORMTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。

声明式事务管理建立在aop之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。

声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。

自动提交(AutoCommit)与连接关闭时的是否自动提交

自动提交

默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事务中,在这条语句执行完毕时,如果执行成功则隐式的提交事务,如果

执行失败则隐式的回滚事务。

对于正常的事务管理,是一组相关的操作处于一个事务之中,因此必须关闭数据库的自动提交模式。不过,这个我们不用担心,spring会将底层连接的自动提交特性设置为false。

org/springframework/jdbc/datasource/DataSourceTransactionManager.java

// switch to manual commit if necessary. this is very expensive in some jdbc drivers,// so we don't want to do it unnecessarily (for example if we've explicitly// configured the connection pool to set it already).if (con.getautocommit()) {  txobject.setmustrestoreautocommit(true);  if (logger.isdebugenabled()) {    logger.debug("switching jdbc connection [" + con + "] to manual commit");  }  con.setautocommit(false);}

--结束END--

本文标题: spring的@Transactional注解用法解读

本文链接: https://www.lsjlt.com/news/219921.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作