Spring事务管理器的配置和使用

1.为什么要配置spring事务管理器。

在将spring和hibernate结合之后,我们需要将事务管理交给spring管理。以保证数据的安全型,避免脏数据的出现。通过spring注入来完成此功能。

步骤1:在spring的配置文件中配置事务管理器

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
</bean>

步骤2:配置完事务管理器,需要给事务管理器加上各种参数。

<!-- 哪些方法需要Spring开启事务transaction-manager="transactionManager":指定事务管理器通知类型:Spring帮我们写好--><tx:advice transaction-manager="transactionManager" id="txAdvice"><tx:attributes><!--REQUIRED:需要开启事务 rollback-for:抛出哪些异常需要Spring回滚name="save*":以save开头的要开启事务rollback-for:抛出哪类异常(以及子类)的时候,Spring事务回滚,默认是RunTimeException--><tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/><tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/><tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/><!--其它方法,只能读 --><tx:method name="*" read-only="true"/></tx:attributes></tx:advice>

步骤3:指定那些类执行事务管理器,,可以将事务管理器也理解成一种通知类型。(通知类型可以理解成就是拦截器,配置及使用参照)一般来说都是放在Service层,因为放在Dao层来说,Dao层每次都是执行一条sql成功与否对其他的sql没影响。但是放到Service层当一条sql语句出现错误时,事务回滚

<!-- 配置AOP,目的:哪些类里面的哪些方法执行事务管理器--><aop:config><!-- 定义哪些类执行事务管理器推荐放到实现类上面(Service)--><aop:pointcut expression="execution(* com.bjsxt.*.service.impl.*.*(..))" id="pointcut"/><!-- 将事务管理器和横切面(pointcut)关联起来 --><aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/></aop:config>

以上三步配置完成之后,运行项目你会发现tomcat会给你报

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined
in file [F:\workspace\ssh_demo\build\classes\spring\applicationContext_common.xml]: Invocation of init method failed; nested exception is
org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]

这段话的意思是说transactionManager我们配置的那个事务管理器找不到DataSource,我们需要将数据源也交给事务管理器

步骤4:配置数据源

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!-- 驱动 --><property name="driverClassName" value="com.mysql.jdbc.Driver"/><!-- url --><property name="url" value="jdbc:mysql://localhost:3306/ssh"/><!-- 用户名 --><property name="username" value="root"/><!-- 密码 --><property name="password" value="199464"/></bean>

开启自动装备之后,开启自动装备transactionManager中的Datasource属性会被自动赋值。
完成以上操作,再执行就可以执行数据库的的增删改的错的了。

Spring事务管理器的配置和使用相关推荐

  1. spring事务管理器的作用_【面试必问】Spring中的事务管理详解

    在这里主要介绍Spring对事务管理的一些理论知识,实战方面参考上一篇博文: http://www.cnblogs.com/longshiyVip/p/5061547.html 1. 事务简介: 事务 ...

  2. Spring事务管理器配置两种配置方法,使用方法

    配置事务管理器 编程式事务管理: 要修改原来的代码,加入事务管理代码 (侵入性 )- 不推荐,不使用 声明式事务管理:底层就是AOP的环绕通知, - 推荐 用XML配置方式添加事务管理(tx.aop约 ...

  3. Spring事务管理——使用XML配置声明式事务

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.事务介绍 事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和 ...

  4. Spring事务管理器分类

    Spring并不直接管理事务,事实上,它是提供事务的多方选择.你能委托事务的职责给一个特定的平台实现,比如用JTA或者是别的持久机制.Spring的事务管理器可以用下表表示: 事务管理器的实例 目标 ...

  5. java中事务实例,Java Spring 事务管理器入门例子教程(TranscationManager)

    注:阅读本文之前请务必有上文的基础 本文我们使用的事务管理器(TranscationManager)的作用是保证一组数据库操作的原子性.保证在操作时,如果出现异常,事务管理器会将状态恢复到进行本组操作 ...

  6. Spring事务管理 与 SpringAOP

    1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略.  ...

  7. 什么是事务的传播_这么漂亮的Spring事务管理详解,你不来看看?

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  8. Spring 事务管理高级应用难点剖析

    Spring 事务管理高级应用难点剖析: 第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/index.html htt ...

  9. Spring 事务管理高级应用难点剖析--转

    第 1 部分 http://www.ibm.com/search/csass/search/?q=%E4%BA%8B%E5%8A%A1&sn=dw&lang=zh&cc=CN& ...

最新文章

  1. JDBC与数据库连接工具对比分析
  2. 英特尔成立物联网视频事业部,这届IESS还揭露了哪些信息?
  3. R语言时间序列(time series)分析实战:使用ARIMA模型预测时间序列
  4. .net WCF简单实例
  5. EditText / This text field does not specify an inputType or a hint
  6. Java的内存分配策略有哪些_Java的内存分配策略
  7. 几篇关于Hadoop+Hive数据仓库的入门文章
  8. auto_ptr解析
  9. 使用js代码将HTML Table导出为Excel
  10. 程序员面试金典 - 面试题 02.06. 回文链表(快慢指针+链表反转)
  11. 三维重建之环境搭建1-VS2017安装
  12. JavaMD5加密MD5Utils工具类
  13. 解决Windows10系统更新后自带的记事本不见了
  14. 基于C#的“密码学”实验演示系统的设计与实现、.NET下的RSA编程、各种密码学算法的C# GUI编程实现
  15. TFS工作项模板自定义指南
  16. 对sin(x)^n dx or cos(x)^n dx的计算验证过程以及结论
  17. 洛谷P1348 Couple number
  18. 今天面了个腾讯拿30k出来的,真是小母牛按门铃,牛逼到家了
  19. 官方授权正版 Grapher 中文网站 专业 2D、3D 绘图和统计分析软件, 深入了解您的数据软件
  20. 浙里办APP对接常见问题

热门文章

  1. 笔记本电脑在使用远程桌面全屏时关闭了连接栏怎么退出全屏
  2. TML5期末大作业:红色自适应网上鲜花网站设计——浪漫红色自适应网上鲜花店(16页) HTML+CSS+JavaScript 大学生鲜花网页作品 植物网页设计作业模板 学生网页制作源代码下载
  3. web网页设计与开发:旅游酒店网站设计——红色大气的度假酒店预订网站html模板(5页) HTML+CSS+JavaScript
  4. 适合不想露脸的普通人做,把一段文字制作成视频,一周挣了2564
  5. 刷野打怪上王者·C++篇·第5期·数据类型
  6. impdp导入排除指定表
  7. 淘宝爬虫不可信先要登录
  8. CelebA-Spoof: Large-Scale Face Anti-Spoofing Dataset with Rich Annotations ECCV2020
  9. 获取当前scn号scn1_Oracle 系统改变号SCN详解
  10. 如何用R语言绘制生成正态分布图表