步骤1:修改applicationContext.xml步骤2:为ProductServiceImpl 添加注解步骤3:测试步骤4:MYSQL 表的类型必须是INNODB才支持事务

步骤 1 : 修改applicationContext.xml
在SSH 通过XML 配置事务管理 的基础上,修改applicationContext.xml文件.
1. 去掉<tx:advice和 <aop:config 配置
2. 保留<bean id="transactionManager" ...>
3. 添加<tx:annotation-driven transaction-manager="transactionManager"/> 用于进行注解扫描<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><bean name="productActionBean" class="com.how2java.action.ProductAction"><property name="productService" ref="productServiceImpl" /></bean><bean name="productServiceImpl" class="com.how2java.service.impl.ProductServiceImpl"><property name="productDAO" ref="productDAOImpl" /></bean><bean name="productDAOImpl" class="com.how2java.dao.impl.ProductDAOImpl"><property name="sessionFactory" ref="sf" /></bean><bean name="sf"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="ds" /><property name="mappingResources"><list><value>com/how2java/pojo/Product.hbm.xml</value></list></property><property name="schemaUpdate"> <value>true</value> </property> <property name="hibernateProperties"><value>hibernate.dialect=org.hibernate.dialect.MySQLDialecthibernate.show_sql=truehbm2ddl.auto=update</value></property></bean> <bean name="ds"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/><property name="username" value="root" /><property name="password" value="admin" /></bean><!-- 配置事务管理器(声明式的事务) --> <bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sf"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> </beans>步骤 2 : 为ProductServiceImpl 添加注解
在ProductServiceImpl 的list方法前加一句:@Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")
表示这个方法要进行事务管理。
没了~package com.how2java.service.impl;import java.util.List;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;import com.how2java.dao.ProductDAO;import com.how2java.pojo.Product;import com.how2java.service.ProductService;public class ProductServiceImpl implements ProductService {ProductDAO productDAO;@Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")public List<Product> list() {List<Product> products= productDAO.list();if(products.isEmpty()){for (int i = 0; i < 5; i++) {if(i==2)throw new RuntimeException();Product p = new Product();p.setName("product " + i);productDAO.add(p);products.add(p);}}return products;}public ProductDAO getProductDAO() {return productDAO;}public void setProductDAO(ProductDAO productDAO) {this.productDAO = productDAO;}}步骤 3 : 测试
删除product_表中数据,重启tomcat,访问页面:http://127.0.0.1:8080/ssh/listProduct
即可观察到不断地抛出异常,不会插入数据。

步骤 4 : MYSQL 表的类型必须是INNODB才支持事务
在Mysql中,只有当表的类型是INNODB的时候,才支持事务,所以需要把表的类型设置为INNODB,否则无法观察到事务.
修改表的类型为INNODB的SQL:alter table product_ ENGINE = innodb;
查看表的类型的SQLshow table status from how2java;
不过有个前提,就是当前的MYSQL服务器本身要支持INNODB,如果不支持,请看 开启MYSQL INNODB的办法
更多内容,点击了解: https://how2j.cn/k/ssh/ssh-transaction-annotation/1077.html

事务配置_SSH(五)- 使用注解方式配置事务管理相关推荐

  1. java datasource 配置_Spring boot 基于注解方式配置datasource

    Spring boot 基于注解方式配置datasource Xml配置 我们先来回顾下,使用xml配置数据源. 步骤: 先加载数据库相关配置文件; 配置数据源; 配置sqlSessionFactor ...

  2. atitit.ajax bp dwr 3.的注解方式配置使用流程总结.....

    atitit.ajax bp dwr 3.的注解方式配置使用流程总结..... 1. 下载  dwr.jar 1M 1 2. 配置注解方式..web.xml 1 3. Class 配置 2 4. 测试 ...

  3. Hibernate实体映射配置1(java@注解方式)

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

  4. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对照注解方式的优缺点)...

    接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文採用强制的CGLB代理方式 Security ...

  5. spring AOP自定义注解方式实现日志管理

    转:spring AOP自定义注解方式实现日志管理 今天继续实现AOP,到这里我个人认为是最灵活,可扩展的方式了,就拿日志管理来说,用Spring AOP 自定义注解形式实现日志管理.废话不多说,直接 ...

  6. Spring 使用注解方式进行事物管理

    Spring 使用注解方式进行事物管理 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transaction ...

  7. Spring AOP注解方式实现日志管理

    文章目录 自定义注解 BussLog BussLogAspect 前言:使用注解方式实现日志管理,可以使我们的程序变的清晰.简单,不和很多业务代码混在一起. 实现思路大致分为四点 设计日志表和日志类, ...

  8. Spring 注解方式实现 事务管理

    2019独角兽企业重金招聘Python工程师标准>>> 使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间 <beans xmlns="h ...

  9. ssm注解配置连接mysql_基于注解和配置类的SSM(Spring+SpringMVC+Mybatis)项目详细配置...

    在上一篇文章中介绍了使用注解和xml配置文件对项目进行配置,在这篇文章中将xml配置文件中的配置信息都改成使用注解或者配置类的形式. 第一步.配置pom.xml 在一个ssm项目中,可能需要用到的依赖 ...

  10. 注解mysql事物管理_Spring 使用注解方式进行事务管理

    事务的传播行为和隔离级别 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注解方式: @Transactional 当标于类 ...

最新文章

  1. eclipse工程中查看android源码
  2. 双花证明已实现,BCH安全的0确认交易还远吗?
  3. 随堂小测app冲刺(六)
  4. 8月21日至8月27日技术积累
  5. SlideringDrawer的使用(抽屉效果)
  6. su: user tomcat does not exist
  7. 如何在命令行中使用jq将JSON转换为CSV
  8. 数据库高级知识——mysql架构介绍(二)
  9. 为tornado自定义session
  10. vbs连接oracle11,vbs连oracle数据库
  11. django请求和响应
  12. java 文件下载 组件_java文件夹上传下载组件
  13. Abseil之string_view
  14. pbcmc包的介绍(根据生信技能树Jimmy老师分享的乳腺癌分子分型包资料整理)
  15. PyQt5 QThread应用
  16. 使用c语言实现数组连接
  17. 博通linux网卡驱动,在64位CentOS 6 系统上安装Broadcom网卡驱动
  18. 学习商业汇票 ---- 银承汇票业务
  19. iPhone 14 电池耗电怎么样?iPhone 14和13比对那个续航好?
  20. 360oauth token是什么意思_京东开放服务平台(JOS)关于token问题汇总(一)

热门文章

  1. 【问题解决】移动端rem适配的时候会出现打开页面时先缩小(放大)后恢复到正常页面的问题
  2. 解决Http响应内容中文乱码问题
  3. [异常解决] 安卓6.0权限问题导致老蓝牙程序出现异常解决办法:Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission...
  4. Socket java.net.SocketException: Connection reset的解决方案
  5. Spring MVC报异常:org.springframework.web.util.NestedServletException: Request processing failed
  6. 使Git与代理服务器一起使用-因“请求超时”而失败
  7. 让服务器apache/iis/nginx支持.apk/ipa文件下载
  8. RHEL6基础四十三之RHEL文件共享②Samba简介
  9. Objective-C 2.0属性(Property)介绍
  10. 配置Cisco ASA and Cisco *** Client 4.x with Windows 2003 IAS RADIUS Authentication