TransactionTemplate和@Transactional注解的区别
spring支持编程式事务管理和声明式事务管理两种方式。
编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。
显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。
和编程式事务相比,声明式事务唯一不足地方是最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。
编程式事务TransactionTemplate用法:详细见TransactionTemplate类
@Transactional注解的用法:
TransactionTemplate和@Transactional注解的区别相关推荐
- springBoot方法上面添加@Transactional注解与类上面添加@Transactional注解的区别
@Transactionalpublic void updateData(){aService.updateA();//更新A表bService.updateB();//更新B表cService.up ...
- spring的@Transactional注解详细用法
概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型 ...
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...
- spring事务配置,声明式事务管理和基于@Transactional注解的使用
事务管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring提供了几个关于事务处理的类: TransactionDefinition //事务属性定义 Transc ...
- 面试官让我说出2种@Transactional注解的失效场景,我一口气给他说了六种
引言 @Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功.要么同时失败.使用**@Transactional注解时需要注意许多的细 ...
- @Transactional注解的失效场景
@Transactional注解的失效场景 引言 @Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功.要么同时失败.使用@Tran ...
- SpringCloud学习笔记009---杂七杂八003:spring的@Transactional注解详细用法
概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性. Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型 ...
- spring,mybatis事务管理配置与@Transactional注解使用[转]
spring,mybatis事务管理配置与@Transactional注解使用[转] spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至 ...
- 聊一聊Spring中@Transactional注解及其失效的七种场景
文章目录 一.事务(基于AOP) 二.@Transactional介绍 三.@Transactional失效场景 说明:当我准备写我知道的那几个场景时,我发现有人比我写的更好,关键是好得多,于是我就用 ...
最新文章
- const类型成员函数与mutable
- pandas错误之: in pandas._libs.hashtable.PyObjectHashTable.get_item
- 2013编程之美资格赛【传话游戏】
- virtualbox 安装 虚拟机的时候报错不能创建新任务
- 不用加好友,查看对方校内照片
- tensorflow object detect API 使用,并修改一部分
- 英语阅读计算机病毒是指,阅读计算机病毒大战的答案
- 好用的电子书网站 Z-library
- 转载的发现对自己非常有用,来分享给大家
- Ubuntu安装Hbase数据库
- LED小间距屏幕理解
- Springboot毕设项目健康在线服务平台26iy0(java+VUE+Mybatis+Maven+Mysql)
- 解决错误代码:0xc000007b系统蓝屏问题
- 你不知道的前端图片处理(万字长文,建议收藏)
- 如何用Scrum做变革管理的落地实施
- @kubernetes(k8s) 应用配置管理(ConfigMap、subPath、Secret)
- 自动投票器的原理及设计思路 http://blog.csdn.net/lkfstar/archive/2008/01/12/2039070.aspx
- Microsoft Edge 离线下载安装技巧
- java计算机毕业设计高校勤工助学管理系统MyBatis+系统+LW文档+源码+调试部署
- 使用 React Hooks实现一个返回顶部的按钮
热门文章
- Linux Kernel ‘install_user_keyrings()’竞争条件漏洞
- 备忘录 - FL2440 开发板操作要点及注意事项
- 结构化项目管理:十步法 [摘自:成功的软件项目管理]
- [iPhoneアプリ]iEscaper2攻略その6|龍の水晶
- python写的购物车程序
- JS的隐式转换 从 [] ==false 说起
- eclipse查看jar包中class的中文注释乱码问题的解决
- 201521123054《Java程序设计》第1周学习总结
- centos安装vsftpd
- 学javascript 必须了解 typeof 和 instanceof