5 Spring对事务的支持

一、AOP事务的含义:

事务当作一个切面,动态地织入到目标对象,形成一个代理对象。

二、Spring的事务机制

Spring支持声明式事务。

Spring使用事务服务代理和事务管理器(如HibernateTransactionManager)来支持事务服务。

Spring对事务的边界多了一种嵌套事务(PROPAGATION_NESTED)。

PROPAGATION_NESTED:

如果客户端启动了事务T1,那么Bean启动一个嵌套在T1中的子事务T2;

如果客户端没有启动事务,那么Bean会启动一个新的事务,类似于REQUIRED_NEW

三、Spring中事务的使用

1、Spring中使用Hibernate事务

Step1:配置数据源

Step2:配置sessionfactory (同上)

Step3:配置事务管理器

<bean id="myTransactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory">

<ref bean="mySessionFactory" />

</property>

</bean>

Step4:创建事务服务代理

<bean id="saleService"

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

<property name="proxyInterfaces">

<value>lab7.SaleService</value>

</property>

<property name="transactionManager">

<ref bean="myTransactionManager" />

</property>

<property name="target">

<ref bean="saleServiceTarget" />

</property>

<property name="transactionAttributes">

<props>

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

</props>

</property>

</bean>

事务属性描述格式:

传播行为,隔离级别,只读事务(read-only),回滚规则

在默认情况下,Spring的容器对于非受查异常(服务模块中抛出的非受查异常),会回滚事务。对于受查异常,会提交事务。

如果即使发生了某种受查异常,也要回滚事务,可以用  “- 异常类型“来声明。同样,对于非受查异常,如果不要求回滚事务,可以用"+异常类型"来声明。

如何简化事务配置?

使用继承(抽象的Service类)、自动代理。

四、Spring事务与EJB事务

1、EJB事务:

EJB的CMT管理事务方式,只能设置事务边界(传播行为),对于隔离性是不能设置的,并且EJB不支持嵌套事务。

2、Spring事务:

对于Spring来说, Spring的声明式事务可以设置事务边界(传播行为),设置隔离级别,设置只读事务,回滚规则(+:对于任何异常都提交,-:对于任何异常都回滚)

<property name=”transactionAttributes”>

<props>

<prop key=”*”>+异常类型1,-异常类型2</prop>

</property>

PS:Spring对嵌套事务的支持依赖与数据库底层对嵌套式事务的支持。

spring知识大全(4)的更多相关文章

  1. spring知识大全(3)

    4 Spring对持久层的支持 Spring对持久层的支持:① JDBC,② O/R Mapping(Hibernate,TopLink等) 一.Spring对持久层支持采用的策略: 1.Spring ...

  2. PHP知识大全

    --------------------------------------------------------- PHP知识大全 ---------------------------------- ...

  3. python知识大全目录,想学的看过来!

    Python总结篇——知识大全   python装饰器   PyCharm安装与配置,python的Hello World   sort与sorted的区别及实例   我必须得告诉大家的MySQL优化 ...

  4. VC6.0调试知识大全

    VC6.0调试知识大全 分类: C++ 2010-09-06 21:33 7080人阅读 评论(5) 收藏 举报 debuggingmfcfunctionmenumicrosoftdll My Not ...

  5. .Net知识大全(个人整理)

    .Net知识大全 本章内容适用于对.NET有一定基础的或者是想通过本文章对.NET基础知识记不清楚的朋友,可以通过本文章进行回顾. 面试的时候可能也会遇到相应的题目,建议面试前进行回顾!!! 1.NE ...

  6. 使用所学Spring知识,实现简易的图书查询系统功能。实现查询全部图书。 根据书籍编号查询信息。 根据书名查询书籍信息。 根据状态查询书籍信息。

    相关 知识 >>> 相关 练习 >>> 实现要求: 使用所学Spring知识,实现简易的图书查询系统功能. 要求如下: 查询全部图书. 根据书籍编号查询信息. 根据 ...

  7. Spring注解大全,汇总版

    Spring使用的注解大全和解释 注解 解释 @Controller 组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类 ...

  8. Spring 注解大全与详解

    Spring使用的注解大全和解释 注解 解释 @Controller 组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类 ...

  9. [转]Spring 注解大全与详解

    Spring使用的注解大全和解释 注解 解释 @Controller 组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类 ...

随机推荐

  1. jmc远程监控java服务

    简介 JMC(Java mission control)是JDK自带的一个图形界面监控工具,监控信息非常全面.他的安装目录在%JAVA_HOME%\bin\jmc.exe 最近JSTORM程序在集群环 ...

  2. VSS记住用户名和密码

    计算机-属性-高级系统设置-环境变量 新建两个环境变量如下:        SSUSER(VSS的用户名)        SSPWD(VSS的密码)

  3. TMS320DM642启动模式(Bootmode)(转)

    原文地址:http://www.cnblogs.com/xiangai10000/p/JamesYang.html 在TI官方的文档<TMS320DM642 Video/Imaging Fixe ...

  4. 谈谈springMVC和Strut2的理解

    关于struts2框架原理 执行流程 struts2框架的核心是一个过滤器,我们编写的action类都继承ActionSupport的接口(顶层是一个过滤器filter),用户发送请求,经过核心过滤器 ...

  5. sqlserver创建,调用 带返回值存取过程

    <1>create: ALTER  proc [dbo].[common_proc] @sql1 varchar(5000), @sql2 varchar(5000) OUTPUT as ...

  6. [知识整理]Java集合(一) - List

    一.实现List的几个类: ArrayList.LinkedList.CopyOnWriteArrayList.Vector 二.几个List底层的数据结构: ArrayList - 数组列表 Lin ...

  7. GD图片(画布)的制作及验证码的应用

    创建画布:创建画布的函数有 imagecreatetruecolor(width,height);创建画布 width指画布的宽height指画布的高 imagecolorallocate(img,r ...

  8. KeepAlived主备/主主模型高可用Nginx

    部署准备: 两台CentOS 7主机HA1和HA2 CentOS 7 基于rpm包安装Nginx: 由于Base源中没有Nginx,所以要安装EPEL源,命令如下: wget http://dl.fe ...

  9. HDU2063 过山车

    过山车 RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐.但是, ...

  10. TCP数据包的封包和拆包

    //该段博文为引用,非原创. 封包和拆包 作者:fengge8ylf  博客:http://blog.csdn.net/fengge8ylf 对于基于TCP开发的通讯程序,有个很重要的问题需要解决,就 ...