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

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

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

显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。

和编程式事务相比,声明式事务唯一不足地方是最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。

编程式事务TransactionTemplate用法:详细见TransactionTemplate类

@Transactional注解的用法:

TransactionTemplate和@Transactional注解的区别相关推荐

  1. springBoot方法上面添加@Transactional注解与类上面添加@Transactional注解的区别

    @Transactionalpublic void updateData(){aService.updateA();//更新A表bService.updateB();//更新B表cService.up ...

  2. spring的@Transactional注解详细用法

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

  3. spring事物配置,声明式事务管理和基于@Transactional注解的使用

    事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...

  4. spring事务配置,声明式事务管理和基于@Transactional注解的使用

    事务管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring提供了几个关于事务处理的类: TransactionDefinition //事务属性定义 Transc ...

  5. 面试官让我说出2种@Transactional注解的失效场景,我一口气给他说了六种

    引言 @Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功.要么同时失败.使用**@Transactional注解时需要注意许多的细 ...

  6. @Transactional注解的失效场景

    @Transactional注解的失效场景 引言 @Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功.要么同时失败.使用@Tran ...

  7. SpringCloud学习笔记009---杂七杂八003:spring的@Transactional注解详细用法

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

  8. spring,mybatis事务管理配置与@Transactional注解使用[转]

    spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至 ...

  9. 聊一聊Spring中@Transactional注解及其失效的七种场景

    文章目录 一.事务(基于AOP) 二.@Transactional介绍 三.@Transactional失效场景 说明:当我准备写我知道的那几个场景时,我发现有人比我写的更好,关键是好得多,于是我就用 ...

最新文章

  1. const类型成员函数与mutable
  2. pandas错误之: in pandas._libs.hashtable.PyObjectHashTable.get_item
  3. 2013编程之美资格赛【传话游戏】
  4. virtualbox 安装 虚拟机的时候报错不能创建新任务
  5. 不用加好友,查看对方校内照片
  6. tensorflow object detect API 使用,并修改一部分
  7. 英语阅读计算机病毒是指,阅读计算机病毒大战的答案
  8. 好用的电子书网站 Z-library
  9. 转载的发现对自己非常有用,来分享给大家
  10. Ubuntu安装Hbase数据库
  11. LED小间距屏幕理解
  12. Springboot毕设项目健康在线服务平台26iy0(java+VUE+Mybatis+Maven+Mysql)
  13. 解决错误代码:0xc000007b系统蓝屏问题
  14. 你不知道的前端图片处理(万字长文,建议收藏)
  15. 如何用Scrum做变革管理的落地实施
  16. @kubernetes(k8s) 应用配置管理(ConfigMap、subPath、Secret)
  17. 自动投票器的原理及设计思路 http://blog.csdn.net/lkfstar/archive/2008/01/12/2039070.aspx
  18. Microsoft Edge 离线下载安装技巧
  19. java计算机毕业设计高校勤工助学管理系统MyBatis+系统+LW文档+源码+调试部署
  20. 使用 React Hooks实现一个返回顶部的按钮

热门文章

  1. Linux Kernel ‘install_user_keyrings()’竞争条件漏洞
  2. 备忘录 - FL2440 开发板操作要点及注意事项
  3. 结构化项目管理:十步法 [摘自:成功的软件项目管理]
  4. [iPhoneアプリ]iEscaper2攻略その6|龍の水晶
  5. python写的购物车程序
  6. JS的隐式转换 从 [] ==false 说起
  7. eclipse查看jar包中class的中文注释乱码问题的解决
  8. 201521123054《Java程序设计》第1周学习总结
  9. centos安装vsftpd
  10. 学javascript 必须了解 typeof 和 instanceof