1.事务的特性

  原子性:事务中的操作是不可分割的一部分

  一致性:要么同时成功,要么同时失败(事务执行前后数据保持一致)

  隔离性:并发互不干扰  

  持久性:事务一旦被提交,它就是一条持久性的数据

  

 2.Spring事务管理高层抽象3个接口

    PlatformTransactionManager--平台事务管理器

      -Spring为不同的持久化框架提供了不同的平台事务管理器接口实现

    TransactionDefinition--事务定义信息(隔离,传播,超时,只读)

      1>事务的隔离级别

        default--适用后端数据库默认的隔离级别

        READ_UNCOMMITED - READ_COMMITTED - REPEATABLE_READ - SERIALIZABLE(脏,幻(虚),不可重复读)

      2>事务的传播行为:解决业务层方法之间相互调用的问题

        PROPAGATION_REQUIRED - 支持当前事务,如果不存在就新建一个

        PROPAGATION_REQUIRES_NEW - 如果有事务存在,挂起当前事务,创建一个新的事物

        PROPAGATION_NESTED - 如果当前事务存在,则嵌套执行

    TransactionStatus--事务具体运行状态

      1>------------------------------------------------------

    流程 --

        根据事务定义的信息有平台事务管理器进行事务管理,进行管理产生相应的状态

 

3.Spring事务管理

  - 编程式的事务管理 -- 通过TransactionTemplate(事务模板)

  - 使用xml配置声明式事务

    --基于transactionProxyFactoryBean的事务管理

      ---配置事务管理器

      ---配置业务层代理

      ---配置目标对象

      ---注入事务管理器

      ---注入事务

      <!--

prop格式 PROPAGATION--事务的传播行为 ISOLATION--事务的隔离级别        READONLY--只读

-EXCEPTION--发生哪些行为事务回滚 +EXCEPTION--发生哪些错误事务不回滚

-->

<!-- 配置事务管理器 -->

<bean id="transactionManager"

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource"></property>

</bean>

<!-- 配置业务层代理 -->

<bean id="accountServiceProxy"

class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<!-- 配置目标对象 -->

<property name="target" ref="accountService"></property>

<!-- 注入事务管理器 -->

<property name="transactionManager" ref="transactionManager"></property>

<!-- 注入事务属性 -->

<property name="transactionAttribute">

<props>



<prop key="tran*">PROPAGATION_REQUIRED</prop>

</props>

</property>

</bean>



--基于AspectJ的事务声明(重点)

    ---配置事务的增强

      ----事务定义信息

        -----propagation:事务的传播行为

        -----isolation:事务的隔离级别

        -----read-only:只读

        -----rollback-for:发生哪些异常时回滚

        -----no-rollback-for:发生哪些异常时不回滚

        -----timeout:过期信息

     ---配置切面

      ----配置切入点

      ----配置切面

      <!-- 配置事务的通知(事务的增强) -->

<tx:advice id="transactionAdvice" transaction-manager="transactionManager">

<!-- 事务定义信息 -->

<tx:attributes>

<tx:method name="tran*" propagation="REQUIRED" read-only="false" />

</tx:attributes>

</tx:advice>

<!-- 配置切面 -->

<aop:config>

<!-- 配置切入点 -->

<aop:pointcut expression="execution(* com.spring.service.impl.*.*(..))"

id="pointcut" />

<!-- 配置切面 -->

<aop:advisor advice-ref="transactionAdvice" pointcut-ref="pointcut" />

</aop:config>

  

  --基于注解的方式进行事务的声明(重点)

    ---开启事务注解

        <tx:annotation-driven transaction-manager="transactionManager"/>

    ---在要进行实务操作的类名上进行注解

@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)

源码 --

Spring声明式事务的配置方式的更多相关文章

  1. Spring声明式事务的配置~~~

    /*2011年8月28日 10:03:30 by Rush  */ 环境配置 项目使用SSH架构,现在要添加Spring事务管理功能,针对当前环境,只需要添加Spring 2.0 AOP类库即可.添加 ...

  2. Spring声明式事务的实现方式选择(JDK动态代理与cglib)

    1.简介 Spring声明式事务的具体实现方式是动态决定的,与具体配置.以及事务代理对象是否实现接口等有关. 2.使用JDK动态代理的情况 在满足下面两个条件时,Spring会选择JDK动态代理作为声 ...

  3. 五(一)、spring 声明式事务注解配置

    一.事务概述: 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用:比如 用户购买图书:购买动作之前需要确认 ①图书的数量是否足够:②用户账号余额是否足够 ...

  4. spring声明式事务以及配置

    使用spring提供的事务处理机制的好处是程序员可以不用关心事务的切面了,只要配置就好了,可以少写代码. spring声明式事务处理 spring 声明:针对的是程序员,程序员告诉spring容器,哪 ...

  5. 五(二)、spring 声明式事务xml配置

    概述: 接着上一节内容,把注解配置@@Transactional形式改为xml配置形式: 一.配置步骤 1.配置事务管理器 1 <!-- 1配置事务管理器 --> 2 <bean i ...

  6. XML方式实现Spring声明式事务管理

    1.首先编写一个实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() ...

  7. JavaEE学习之Spring声明式事务

    一.引言 上一篇文章,学习了AOP相关知识,并做了一个简单的Hello world.本文在上篇文章的基础上,进一步学习下Spring的声明式事务. 二.相关概念 1. 事务(Transaction)— ...

  8. spring 声明式事务管理

    简单理解事务: 比如你去ATM机取5000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉5000元钱:然后ATM出5000元钱.这两个步骤必须是要么都执行要么都不执行.如果银行卡扣除了5000块但 ...

  9. Spring声明式事务(xml配置事务方式)

    Spring声明式事务(xml配置事务方式) >>>>>>>>>>>>>>>>>>>& ...

随机推荐

  1. tips 前端 阻止 浏览器缓存静态资源

    手机浏览器 uc上一直表现良好 qq浏览器还有微信上网址直接打开的(一样采用qq浏览器的内核) 大量缓存了静态资源 css js 图片 等这些当出现改动了刷新网页根本没有效果 电脑端浏览器没有问题 因 ...

  2. 汕头市队赛 SRM13 T3

    这道题可以贪心 维护一个答案队列 枚举位置 每次将比当前位置大的队尾全部替代掉 记录删了多少了就好了 #include<cstdio> #include<iostream> # ...

  3. Linux应用层的定时器Timer使用详解【转】

    转自:http://blog.csdn.net/wwwtovvv/article/details/8601528 版权声明:本文为博主原创文章,未经博主允许不得转载. linux下定时器的使用 -- ...

  4. Linux平台用C++实现事件对象,同步线程

    前文在Win32平台上用C++实现了事件对象Event,对线程进行同步,以达到期望目的.这次在Linux平台上实现与之类似的事件对象.与其相关的一组API包括:pthread_mutex_init,p ...

  5. Windows录音API学习笔记--转

    Windows录音API学习笔记 结构体和函数信息  结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力. typedef struct { WORD      wMid; 用于波形 ...

  6. zabbix 硬盘状态收集,制作表格

    将zabbix首页复制到a文件里,这里主要是用到首页里 最近出现的问题 的信息 # -*- coding:utf-8 -*- import time import os from openpyxl i ...

  7. Git用法速成手册

    Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一.新建代码库 # 在当前目录新建一个Git代码库 git init ...

  8. Visual Studio跨平台开发(1):Hello Xamarin!

    前言 应用程序发展的脚步, 从来没有停过. 从早期的Windows 应用程序, 到网络时代的web 应用程序, 再到近几年相当盛行的行动装置应用程序(Mobile Application), 身为C# ...

  9. 蓝桥杯模拟赛 引爆炸弹-并查集+DFS

    引爆炸弹 在一个 n×m的方格地图上,某些方格上放置着炸弹.手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去. 现在为了引爆地图上的所有炸弹, ...

  10. shell 查找目录

    查找目录:find /(查找范围) -name '查找关键字' -type d