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. Nginx启动报错: could not open error log file: open() &q

    启动nginx报如下错误: nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error ...

  2. NodeJs 连接mysql一例。

    var mysql = require('mysql'); var connection = mysql.createConnection({ host :'127.0.0.1', user :'ro ...

  3. NFS服务器原理

    NFS服务器   port:2049      NFS 为 Network FileSystem 的简称,它的目的就是想让不同的机器.不同的操作系统可以彼此分享个别的档案啦!目前在 Unix Like ...

  4. Md5 签名算法

    /// <summary>        /// MD5签名        /// </summary>        /// <param name="pre ...

  5. JQuery实现的模块交换动画效果

    <!doctype html> <html> <head> <meta http-equiv="content-type" content ...

  6. SQL Server 的表数据简单操作

    --表数据操作----添加表数据----向现有表添加数据--[use 要操作数据表的数据库名称go]insert [into] 数据表 [(字段名1,字段名2,字段名3, ...)] values(值 ...

  7. {POJ}{3897}{Maze Stretching}{二分答案+BFS}

    题意:给定迷宫,可以更改高度比,问如何使最短路等于输入数据. 思路:由于是单调的,可以用二分答案,然后BFS验证.这里用优先队列,每次压入也要进行检查(dis大小)防止数据过多,A*也可以.好久不写图 ...

  8. javascript-binarySearch

    前提: 数组已排序,且为正整数数组. function brnarySearch(arg, arr) { var right = arr.length - 1; var left = 0; while ...

  9. [VM workstation]VM workstation 中的虚拟机连不上网络

    之前一直没有想到虚拟机连不上网络是VM workstationg 自身的原因. 突然在进入虚拟机时看见提示:VM 桥接网桥无法正常工作 于是便进入 编辑→虚拟网络编辑器 中将虚拟网卡都重置了一下就可以 ...

  10. Nginx Location配置总结

    Nginx Location配置总结 语法规则: location [=|~|~*|^~] /uri/ { - }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即 ...