SSM框架——以注解形式实现事务管理

上一篇博文《SSM三大框架整合详细教程》详细说了如何整合Spring、SpringMVC和MyBatis这三大框架。但是没有说到如何配置mybatis的事务管理,在编写业务的过程中,会需要进行事务处理,当需要执行多条插入语句时,如果前几条成功,而最后一条失败,那么我们需要回滚数据库操作,保持数据的一致性和完整性,此时,就需要利用DB的事务处理。事务是恢复和并发控制的基本单位。

简单来说,所谓的事务,是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。

?原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

?一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

?隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

?持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

MyBatis集成Spring事务管理

在SSM框架中,使用的是Spring的事务管理机制。Spring可以使用编程式实现事务,声明式实现事务以及注解式实现事务。本文主要说一下如何使用注解式@Transanctional实现实现事务管理。

本文代码例子基于上一篇博文,具体代码《SSM三大框架整合详细教程》中已经给出。简单看下目录结构以及实体类:

1、配置spring-mybatis.xml文件

如要实现注解形式的事务管理,只需要在配置文件中加入以下代码即可:

[html] view plain copy print?

  1. <!-- 开启事务注解驱动 -->
  2. <tx:annotation-driven />
  3. <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
  4. <bean id="transactionManager"
  5. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  6. <property name="dataSource" ref="dataSource" />
  7. </bean>

当然,如果此时xml文件报错,那是由于没有引入xmlns和schema导致的,无法识别文档结构。引入头文件即可,以下是我的,根据自己需要引入:

[html] view plain copy print?

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
  5. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.1.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  11. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  12. http://www.springframework.org/schema/mvc
  13. http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

在此用一个小例子来测试事务管理是否成功配置。代码基础是SSM框架搭建里面的测试代码。我们现在注意@Transactional只能被应用到public方法上,对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能。

实体类、DAO接口,业务接口,以及业务实现都有,这个测试

  1. /**
  2. * 事务处理必须抛出异常,Spring才会帮助事务回滚
  3. * @param users
  4. */
  5. @Transactional
  6. @Override
  7. public void insertUser(List<User> users) {
  8. // TODO Auto-generated method stub
  9. for (int i = 0; i < users.size(); i++) {
  10. if(i<2){
  11. this.userDao.insert(users.get(i));
  12. }
  13. else {
  14. throw new RuntimeException();
  15. }
  16. }
  17. }

接下来在测试类中添加如下方法进行测试:

[java] view plain copy print?

  1. @Test
  2. public void testTransaction(){
  3. List<User> users = new ArrayList<User>();
  4. for(int i=1;i<5;i++){
  5. User user = new User();
  6. user.setAge(i);
  7. user.setPassword(i+"111111");
  8. user.setUserName("测试"+i);
  9. users.add(user);
  10. }
  11. this.userService.insertUser(users);
  12. }

(原文地址:http://blog.csdn.net/zhshulin

时间: 2024-08-06 11:54:48

SSM框架——以注解形式实现事务管理的相关文章

SSM框架中以注解形式实现事务管理

上一篇博文<SSM三大框架整合详细教程>详细说了如何整合Spring.SpringMVC和MyBatis这三大框架.但是没有说到如何配置mybatis的事务管理,实现开发中,事务是必不可少的.本篇作为对上一篇的补充,说明在SSM框架中如何使用注解的形式进行事务管理. 什么是事务? 在编写业务的过程中,会需要进行事务处理,当需要执行多条插入语句时,如果前几条成功,而最后一条失败,那么我们需要回滚数据库操作,保持数据的一致性和完整性,此时,就需要利用DB的事务处理.事务是恢复和并发控制的基本单位.

Spring 使用注解方式进行事务管理

使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation

【转】Spring 使用注解方式进行事务管理

Spring 使用注解方式进行事务管理 原文链接 http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html#top 使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i

Spring 注解方式实现 事务管理

使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation

SSM框架整合(注解)-Spring+SpringMVC+MyBatis+MySql

准备工作: 下载整合所需的jar包 点击此处下载 使用MyBatis Generator生成dao接口.映射文件和实体类 如何生成 搭建过程: 先来看一下项目的 目录结构 1.配置dispatcherServlet-servlet.xml,将此文件放于WEB-INF下 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sc

spring框架学习笔记7:事务管理及案例

Spring提供了一套管理项目中的事务的机制 以前写过一篇简单的介绍事务的随笔:http://www.cnblogs.com/xuyiqing/p/8430214.html 还有一篇Hibernate的事务管理:http://www.cnblogs.com/xuyiqing/p/8449167.html 可以做个对比 Spring管理事务特有的属性: 事务传播行为:事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行. 例

SSM框架中注解含义及应用场景小结

先说一下什么是组件扫描: 指定一个包路径,Spring会自动扫描该包及其子包所有组件类,当发现组件类定义前有特定的注解标记时,就将该组件纳入到Spring容器.等价于原有XML配置中的<bean>定义功能. 组件扫描可以替代大量XML配置的<bean>定义. 使用组件扫描,首先需要在XML配置中指定扫描类路径 <context:component-scan base-package = "org.example"/> 上面配置,容器实例化时会自动扫描

基于SSM框架下的JAVA网站后台管理平台

今天将为大家分析一个网站后台管理平台(介绍了使用网站后台管理系统来设计和开发信息网络平台的解决方案,包括系统开发平台.结构模块.技术特点及其应用分析,从而实现智能化的分布式信息制作.发布.维护和管理.网站后台管理系统主要是用于对网站前台的信息管理,如文字.图片.影音.和其他日常使用文件的发布.更新.删除等操作,同时也包括会员信息.订单信息.访客信息的统计和管理.简单来说就是对网站数据库和文件的快速操作和管理系统,以使得前台内容能够得到及时更新和调整.),该项目使用框架为SSM(MYECLIPSE

ssm框架的项目,使用maven管理,启动服务器报错

异常信息: java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 解决办法: Open the project's properties (e.g., right-click on the project's name in the project explorer and select "Properties"). Select "Deployment