`

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

 
阅读更多

 

什么是事务?

在编写业务的过程中,会需要进行事务处理,当需要执行多条插入语句时,如果前几条成功,而最后一条失败,那么我们需要回滚数据库操作,保持数据的一致性和完整性,此时,就需要利用DB的事务处理。事务是恢复和并发控制的基本单位。

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

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


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


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


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


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

MyBatis集成Spring事务管理

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

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

1、配置 spring-mybatis.xml 文件

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

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

           

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

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xsi:schemaLocation="http://www.springframework.org/schema/beans  
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
http://www.springframework.org/schema/context  
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    					http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
http://www.springframework.org/schema/mvc  
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

2、如何使用

在此用一个小例子来测试事务管理是否成功配置。代码基础是 SSM 框架搭建里面的测试代码。我们现在 测试的方法 是:我要插入一个 User 对象的集合,如果此对象数量小于 2 ,那么可以成功插入,但是如果大于 2 ,那么就抛出异常( 事务处理必须抛出异常,只有这样Spring才帮助事务回滚 ),这样数据库就会回滚,不插入任何数据。测试结果如果数据库没插入任何数据,那么表示事务处理配置成功,反正,失败。

      注意@Transactional只能被应用到public方法上 ,对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能。  

        实体类、DAO接口,业务接口,以及业务实现都有,这个测试 仅需要在业务层中添加一个方法,然后使用JUnit测试 即可,业务实现类中添加如下方法, 注意 注解@Transactional :

/**
 * 事务处理必须抛出异常,Spring才会帮助事务回滚
 * @param users
 */

@Transactional
@Override
public void insertUser(List<User> users) {
// TODO Auto-generated method stub
for (int i = 0; i < users.size(); i++) {
if(i<2){
this.userDao.insert(users.get(i));
}
else {
throw new RuntimeException();
}
}
}

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

@Test
public void testTransaction(){
List<User> users = new ArrayList<User>();
for(int i=1;i<5;i++){
User user = new User();
user.setAge(i);
user.setPassword(i+"111111");
user.setUserName("测试"+i);
users.add(user);
}
this.userService.insertUser(users);
}

          注意 :此时进行JUnit测试会发现出现错误,这是因为方法中抛出了这个异常。实质上确实进行了事务管理,数据没有插入,此时表示 配置成功了 ;反之,如果去掉注解,那么前两条数据会插入成功,然后后面会抛出异常。

分享到:
评论

相关推荐

    ssm框架实现的员工管理系统

    这个"ssm框架实现的员工管理系统"是一个基于这些技术的项目,旨在帮助企业管理其员工信息,实现数据的增删查改功能。下面我们将详细探讨这个项目的相关知识点。 1. **Spring框架**:Spring作为核心容器,负责管理...

    SSM框架开发超市管理系统

    这个超市管理系统项目利用SSM框架进行构建,旨在实现全面的超市业务流程管理。下面将详细阐述该项目涉及的主要技术点和功能模块。 首先,Spring作为核心的依赖注入(DI)和面向切面编程(AOP)框架,为系统提供了解...

    ssm框架实现订单管理系统

    在本项目"ssm框架实现订单管理系统"中,开发者利用SSM框架来构建一个完整的订单管理功能,其中包括了对订单的查询、角色的管理等多个模块。以下是对SSM框架及订单管理系统相关知识点的详细解释: 1. **Spring框架**...

    SSM框架实现登录注册功能完整代码

    SSM框架,即Spring、SpringMVC和MyBatis的集成,是Java Web开发中常用的一种技术栈。这个"SSM框架实现登录注册功能完整代码"项目,通过IDEA(IntelliJ IDEA)进行整合,提供了从零开始构建登录注册功能的全套源码,...

    基于SSM框架图书信息管理系统 | 毕业设计

    5 spring容器内部使用拦截器,以Spring AOP的方式实现事务控制管理。 系统实体对象: 图书类型:图书类别,类别名称,可借阅天数 图书:图书条形码,图书名称,图书所在类别,图书价格,库存,出版社,图书图片

    基于SSM框架的旅游从业人员管理系统

    在"基于SSM框架的旅游从业人员管理系统"中,这三个框架协同工作,为系统提供了强大的支持: - Spring作为基础框架,管理所有组件的生命周期,包括数据库连接池、事务管理等,同时也实现了AOP以处理如日志记录、权限...

    简单的ssm框架

    8. **数据库集成**:在SSM框架中,数据库连接和事务管理都是由Spring来处理的。MyBatis与Spring结合使用,可以实现声明式事务管理,提高应用程序的稳定性和可靠性。 9. **构建与运行**:使用Maven或Gradle等构建...

    SSM框架新闻管理系统

    SSM框架新闻管理系统是一款基于Java开发的Web应用,主要用于实现新闻的发布、管理以及用户评论功能。这个系统采用的是Spring、SpringMVC和MyBatis这三大主流Java框架的组合,也就是我们常说的SSM框架。这个项目对于...

    图书管理系统(ssm框架)

    这个“图书管理系统”项目就是基于SSM框架实现的,它整合了Spring的强大功能、SpringMVC的优雅架构以及MyBatis的灵活数据库操作。 1. **Spring框架**:Spring是一个开源的Java平台,核心特性是依赖注入(Dependency...

    基于SSM框架的社区医院信息管理系统设计与实现.zip

    《基于SSM框架的社区医院信息管理系统设计与实现》 在信息技术日新月异的今天,社区医院的信息管理系统的建设显得尤为重要。本项目是作者在学习Java编程时,利用SSM(Spring、SpringMVC、MyBatis)框架构建的一个...

    SSM中进行注解式和XML配置式事务管理代码

    本篇将详细探讨在SSM中如何进行注解式和XML配置式的事务管理,以实现数据的一致性和完整性。 **一、Spring事务管理简介** Spring作为核心容器,提供了强大的事务管理功能,支持编程式和声明式事务管理。编程式事务...

    基于SSM框架的学生信息管理系统

    首先,SSM框架是Java Web开发中的常用组合,由Spring框架负责依赖注入和事务管理,SpringMVC作为Web层的处理,而MyBatis则用于数据库操作。这种架构的优势在于各组件分工明确,使得代码结构清晰,易于维护和扩展。 ...

    ssm框架实现简单的增删改查

    SSM框架,即Spring、SpringMVC和MyBatis的集成框架,是Java Web开发中常用的三大组件。这个框架组合提供了强大的数据访问、业务逻辑处理和用户界面支持。接下来,我们将详细探讨如何利用SSM框架实现一个基础的增删改...

    基于ssm框架的图书借阅系统

    【SSM框架详解及其在图书借阅系统中的应用】 SSM框架是Java Web开发中常用的一种集成框架,由Spring、Spring MVC和MyBatis三个组件组成。本篇将详细介绍SSM框架的核心概念,并结合“基于SSM框架的图书借阅系统”这...

    整合SSM框架实现的酒店管理系统

    本项目"酒店管理系统"就利用了SSM框架来实现复杂的业务逻辑和数据管理。 1. **Spring框架**:作为核心容器,Spring提供了依赖注入(Dependency Injection, DI)和面向切面编程(Aspect-Oriented Programming, AOP)...

    SSM框架的思维导图

    SSM框架是Java Web开发中常用的三大组件——Spring、SpringMVC和Mybatis的集成,它们共同构建了一个灵活且强大的后端服务架构。这五个思维导图分别详细描绘了SSM框架的各个组成部分以及它们之间的关系,对于理解和...

    ssm框架实现单表增删改查、条件查询和分页、文件上传

    在SSM框架中,可以通过动态SQL来实现,例如在MyBatis的Mapper接口和XML配置文件中,根据传入的参数动态拼接WHERE子句,从而实现多样化的查询需求。 分页功能在大数据量的展示中非常重要,它可以有效地减轻服务器...

    基于SSM框架的图书管理系统项目源码

    本项目源码是基于SSM框架实现的一个图书管理系统的实例,旨在帮助开发者理解如何在实际开发中运用这些技术。 首先,Spring框架是整个项目的基石,它提供依赖注入(DI)和面向切面编程(AOP)等功能,使得代码更加...

    ssm框架全注解开发

    SSM框架,即Spring、SpringMVC和MyBatis的集成框架,是Java Web开发中常用的三大组件。在全注解开发模式下,这三大框架的配置和交互更简洁,减少了XML配置文件的使用,提高了开发效率。下面将详细介绍SSM框架全注解...

    SSM框架整合开发学生管理系统后台

    SSM框架是Java企业级开发中常用的一种轻量级框架组合,它提供了强大的服务层管理、控制层路由以及数据访问功能。 **Spring框架**:Spring作为基础容器,负责管理应用中的对象(bean)以及这些对象之间的依赖关系。...

Global site tag (gtag.js) - Google Analytics