`

第十三章 Spring4 编程式事物管理

阅读更多
    事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。在企业级应用程序开发中,事务管理必不可少的技术,用来确保数据的完整性和一致性。


编程式事务管理:

Spring 提供的事务模版类:


    <!-- 声明事物模板,并将事务管理器注入到模板 -->
    <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
    	<property name="transactionManager" ref="transactionManager"></property>
    </bean>



事务管理器:


    <!-- jdbc事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource"></property>
    </bean>




事务有四个特性:ACID

    1、原子性(Atomicity):

    事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。

     2、一致性(Consistency):

    一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。

     3、隔离性(Isolation):

    可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。

     4、持久性(Durability):

    一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。




<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>
     
     <!-- jdbc事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource"></property>
    </bean>
    
    <!-- 声明事物模板,并将事务管理器注入到模板 -->
    <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
    	<property name="transactionManager" ref="transactionManager"></property>
    </bean>
     
     <!-- 读取参数文件 -->
	<context:property-placeholder location="jdbc.properties"/>
    
    <!-- 可命名参数jdbcTemplate -->
    <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
    	<constructor-arg ref="dataSource"></constructor-arg>
    </bean>
	
	<!-- 银行数据库操作类 -->
	<bean id="bankDao" class="com.fx.dao.impl.BankDaoImpl">
		<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"></property>
	</bean> 
	
	<!-- 银行业务操作类 -->
	<bean id="bankService" class="com.fx.service.impl.BankServiceImpl">
		<property name="bankDao" ref="bankDao"></property>
		<property name="transactionTemplate" ref="transactionTemplate"></property>
	</bean> 
	
</beans>




编程式事物代码有侵入性,不提倡使用。
分享到:
评论

相关推荐

    第十四章 Spring4 切面事物与事物通知与传播行为

    Spring4提供了两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中显式地管理事务开始、提交和回滚,而声明式事务管理则通过在配置或注解中声明事务规则,更加灵活且易于维护。例如,...

    第十五章 Spring4 整合 struts2、hibernate

    标题中的“第十五章 Spring4 整合 struts2、hibernate”表明我们将探讨一个关于集成Spring4、Struts2和Hibernate的议题。在Java Web开发中,这三种技术分别担任不同的角色:Spring作为全面的框架提供依赖注入和AOP...

    spring4源码1

    6. 第七讲:可能讲解了Spring的事务管理,包括编程式和声明式事务控制。 7. 第三讲:可能介绍了Spring的基础知识,如环境配置、Bean的定义和初始化。 8. 第二讲:可能是对Spring框架的初步介绍,包括项目结构、依赖...

    spring2.0技术手册_源代码(全十章)

    第三,Spring 2.0增强了对事务管理的支持,包括编程式事务管理和声明式事务管理。通过源代码,我们可以看到`PlatformTransactionManager`接口如何被实现,以及`@Transactional`注解如何用于标记事务边界。同时,还...

    Pro Spring 3(带目录版)

    第13章:深入讲解了事务管理,包括声明式事务管理和编程式事务管理,以及Spring提供的事务抽象。 第14章:介绍了在Spring中进行数据校验,以及类型转换和格式化的处理方法。 第15章:讲解了Spring中的任务调度,...

    Beginning Spring(2015)

    Spring通过声明式事务管理和编程式事务管理为开发者提供了多种选择。本章还涵盖了如何配置和使用不同的事务传播行为。 #### 使用Spring进行测试驱动开发 第七章介绍了测试驱动开发(Test-Driven Development, TDD)...

    跟我学spring3(总共13章)13

    它提供了声明式事务管理,简化了事务处理,使得开发者能专注于业务逻辑。 5. **MVC框架**:Spring MVC是Spring3中的Web开发模块,用于构建RESTful风格的Web应用。它包含DispatcherServlet、Model-View-Controller...

    完整版Java web开发教程PPT课件 Java开发进阶教程 第13章 spring ioc aop(共18页).pptx

    4. Spring DAO:提供了事务管理和JDBC、DAO的支持。 5. Spring ORM:支持流行的O/R Mapping框架,如Hibernate和JPA。 6. Spring WEB:提供了Web应用上下文和Web开发的支持。 7. Spring Web MVC:全功能的MVC框架,...

    Apress.Pro.Spring.4th.Edition

    - **事务处理**:Spring提供了强大的事务管理功能,支持编程式和声明式事务管理。 - **事务隔离级别**:介绍了不同事务隔离级别的概念及其在Spring中的配置方式。 #### 10. 验证与类型转换 - **数据验证**:Spring...

    精通Spring 4.x 企业应用开发实战高清版

    在事务管理方面,Spring 4.x提供了声明式事务管理,让开发者无需编写复杂的事务控制代码。书中会讲解如何配置事务管理器,以及@Transactional注解的使用方法,帮助读者理解事务的ACID属性和隔离级别。 Spring AOP...

    跟我学spring3(8-13)

    【第十三章】 测试: 1. **13.1 概述**:测试在软件开发中至关重要,Spring提供了丰富的测试支持,包括单元测试和集成测试。 2. **13.2 单元测试**:讲解如何使用Spring Test和JUnit进行单元测试,包括测试环境的...

    跟我学spring

    9.1节介绍数据库事务概述,9.2节讨论事务管理器,9.3节和9.4节分别介绍编程式事务和声明式事务。 【第十章】集成其它Web框架。Spring的灵活性允许它与其他流行的Web框架集成。10.1节概述集成其他Web框架,10.2节...

    跟我学spring3(总共13章)12

    4. **事务管理**:Spring提供了声明式和编程式的事务管理方式,使得事务控制更加简单。本教程将介绍如何使用@Transactional注解进行声明式事务管理。 5. **JDBC抽象和数据源管理**:Spring通过JdbcTemplate和...

    [Pro.Spring.3(2012)].Clarence.Ho.文字版

    本章深入探讨了Spring框架提供的事务管理机制,包括编程式和声明式事务管理的实现方式。读者将了解到如何利用Spring事务管理器来控制事务边界,确保数据的一致性和完整性。 ### 第14章:使用类型转换、格式化进行...

    跟我学spring3(总共13章)6

    - 事务管理:利用`@Transactional`注解进行声明式事务管理,Spring会自动在合适的时间点进行事务的开始、提交或回滚。 通过第六章的学习,读者将掌握Spring AOP的基本概念和实际应用,能有效地在项目中运用面向切...

    spring.net中文手册在线版

    第十三章.通用日志抽象层 13.1.简介 13.1.1.Logging API 13.2.实现与配置 13.2.1.控制台Logger 13.3.Log4Net 第二部分. 中间层数据访问 第十四章. 事务管理 14.1.简介 14.2.动机 14.3.核心接口 14.4.用事务进行资源...

    Spring攻略(第二版 中文高清版).part1

    第4章 Spring中的脚本 152 4.1 用脚本语言实现Bean 152 4.1.1 问题 152 4.1.2 解决方案 153 4.1.3 工作原理 153 4.2 将Spring Bean注入脚本中 157 4.2.1 问题 157 4.2.2 解决方案 157 4.2.3 工作...

    Spring in action 中文版(第4版)

    Spring框架的核心特性包括依赖注入(DI)、面向切面编程(AOP)、事务管理等,这些概念对于理解和使用Spring框架至关重要。第4版作为最新版本,应包含了Spring 5的新特性,比如响应式编程支持。 Spring框架的知识点...

Global site tag (gtag.js) - Google Analytics