使用 transactionManager和transactionTemplate管理事务
transactionManager : 编程式事务.建立在AOP之上的。其本质是对方法前后进行拦截 .不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。
transactionTemplate : 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
优缺点:
1.声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式 . 只要加上注解就可以获得完全的事务支持。
2. 编程式事务那样可以作用到代码块级别,而且声明式事务管理最细粒度只能作用到方法级别.二者的作用级别和颗粒度有一定的的差别。
一. 声明式事务
1.配置方式
<-- 开启事务控制的注解支持 -->
<tx:annotation-driven transaction-manager=“transactionManager”/>
<-- applicationContext.xml : 中进行配置 -->
< bean id=“transactionManager” class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
< property name=“dataSource” ref=“dataSource” />
</ bean>
2. 使用@Transactional注解
@Transactional 注解应该只被应用到 public 方法上 , @Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效,一般应用在方法上,如果某些方法被protected、private 或者默认可见性的修饰后,将会自动进行忽略,即使出现异常,也不会进行报错.
应用:(下列注解贴于方法或者类上,就可以对整个方法或者类进行事务管理)
@Transactional
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Transactional(“transactionManager”)
二. 编程式事务
1.配置方式
<-- 开启事务控制的注解支持 -->
<tx:annotation-driven transaction-manager=“transactionManager”/>
<-- 使用spring jdbc管理事务 -->
< bean id=“transactionManager” class=“org.springframework.jdbc.datasource.DataSourceTransactionManager”>
< property name=“dataSource” ref=“dataSource”/>
< /bean>
<-- applicationContext.xml : 中进行配置 -->
< bean id=“transactionTemplate” class=“org.springframework.transaction.support.TransactionTemplate”>
< property name=“transactionManager” ref=“transactionManager”/>
</ bean >
2. 使用@Transactional注解
注入依赖方式:
@Autowired
private TransactionTemplate transactionTemplate;
注解方式
@Transactional(“transactionTemplate”)
使用 transactionManager和transactionTemplate管理事务相关推荐
- spring是如何管理 事务的
Spring提供的事务管理可以分为两类:编程式的和声明式的.编程式的,比较灵活,但是代码量大,存在重复的代码比较多:声明式的比编程式的更灵活方便. 1.传统使用JDBC的事务管理 以往使用JDBC进行 ...
- spring管理事务管理1----------编程式(以下源码均为spring2.5.6)
2019独角兽企业重金招聘Python工程师标准>>> Spring事务策略,有一个接口"PlatformTransactionManager". /* * Co ...
- 使用Redis 管理事务(Java)
前言: Redis中的事务允许在一个步骤中执行一组命令.对某些用户来说,在Java上管理Redis事务可能会非常棘手,但如果您拥有合适的工具,则会更容易. 此篇会介绍在Java上执行Redis事务的所 ...
- Spring管理事务的若干配置形式
Spring管理事务的若干配置形式 虽说利用Spring来实现配置式事务的基本原理都是AOP,但其配置方法也多种多样,以下从互联网摘抄了一些,希望起一个总结作用(有版权问题的话请留言作者,我将立即删除 ...
- Spring Data JPA手动管理事务
1.简介 通常在开发中,我们都会直接使用Spring提供的@Transactional注解来管理事务.但是在某些特殊的情况下,需要我们进行手动的事务管理.例如:将数据保存到数据库后,才能发送消息到队列 ...
- JAVA Spring 事务管理事务不回滚问题
Spring事务管理事务不回滚 dao层: @Repository public class UserDaoImpl implements UserDao { @Autowired private J ...
- Spring事务和Aspects框架管理事务,看这篇就够了!(简单易懂!)
Spring事务和Aspects框架管理事务的用法 一.事务的介绍 1.1什么是事务 1.2事务的四大特性 二.事务的隔离级别以及导致的问题介绍 2.1隔离级别介绍 2.2导致的问题介绍 2.2.1脏 ...
- transactionManager手动事物管理--记一次重大的生产事故
前言 最近在线上环境出现了一个机器总是宕机的问题.就是资源总是耗尽,但是报错的功能点还不一样,每次报错之后都是先重启解决.但是支撑不了一天又会出现资源耗尽的提示.不过,哪个功能出现问题之后,经过仔细的 ...
- 关于使用spring管理hibernate,能够管理事务,却不执行除查询外的增删改操作,不能让数据库数据改变的原因
排除脏读的话 我终于学会了spring-aop管理事务,可以不写事务代码,详见我的博文 https://blog.csdn.net/thebestway/article/details/1012028 ...
最新文章
- 全中国一共有多少IP地址?
- w10安装ubuntu_Win10 + Ubuntu 16.04双系统完美安装教程【详细】
- 信息系统项目管理师-案例分析专题(一)案例简介、答题方法、要点笔记
- hihocoder 1075 : 开锁魔法III
- Eclipse4.8.0无法打开 Eclipse MarketPlace
- C语言Stock span 库存跨度问题(附完整源码)
- 数据级并行--计算机体系结构
- [PAT乙级]1046 划拳
- 兼容IE与firefox的css 线性渐变(linear-gradient)
- 字符设备驱动高级篇5——静态映射表、动态映射结构体方式操作寄存器
- 数据管理流程,基础入门简介
- linux安装及配置c++的opencv库
- matlab中的方波信号图片_哈工大、哈工程MATLAB被禁用,这个国产软件号称可替代!...
- 平安产险_杭州平安产险:寒风中靓丽的一抹橙坚守者
- 量化股票查询代码是什么?
- 第三方服务之Bmob——快速入门
- 【案例】别人卖1000刀!一套油管自动生产视频赚钱方法详解,FFMPEG高手看来
- MBA中国网关注:打造最佳团队的5大秘诀
- 【笔记】Polygon mesh processing 读书笔记(1)
- HTML5期末大作业:英雄联盟网站设计——英雄联盟LOL(4页) HTML+CSS+JavaScript web期末网站设计大作业