1、事务的特点
ACID
原子性、一致性、隔离性、持久性
2、分布式事务
分布式事务处理(Distributed Transaction Processing,DTP)
分布式事务处理是指一个事务可能涉及多个数据库操作,分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。
3、事务配置代码
Spring1.2声明式事务配置关键代码(也能用于2.0)
见附件2
Spring2.0声明式事务配置关键代码
见附件2
4、事务管理的分类
两种事务管理方式:编程式、声明式。
Spring提供两种方式的编程式事务管理,分别是:使用TransactionTemplate和直接使用PlatformTransactionManager。
我选择哪种呢?是选择编程式事务管理还是声明式事务管理
当你只有很少的事务操作时,编程式事务管理通常比较合适。例如,如果你有一个Web应用,其中只有特定的更新操作有事务要求,你可能不愿使用Spring或其他技术设置事务代理。这种情况下,使用 TransactionTemplate 可能 是个好办法。
另一方面,如果你的应用中存在大量事务操作,那么声明式事务管理通常是值得的。它将事务管理与业务逻辑分离,而且在Spring中配置也不难。使用Spring,而不是EJB CMT,声明式事务管理在配置上的成本极大地降低了
5、Spring中常用事务类型:
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop><prop key="store*">PROPAGATION_REQUIRED</prop>
Spring中常用事务类型:
· PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
· PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
· PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
· PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
· PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
· PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
· PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
6、<tx:advice/> 有关的设置
通过 <tx:advice/> 标签来指定不同的事务性设置。默认的 <tx:advice/> 设置如下: W
· 事务传播设置是 REQUIRED
· 隔离级别是 DEFAULT
· 事务是 读/写
· 事务超时默认是依赖于事务系统的,或者事务超时没有被支持。
· 任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚
这些默认的设置当然也是可以被改变的。 <tx:advice/> 和 <tx:attributes/> 标签里的 <tx:method/> 各种属性设置总结如下:
<tx:method/> 有关的设置
属性
|
是否需要?
|
默认值
|
描述
|
name
|
是
|
|
与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*'、'handle*'、'on*Event'等等。
|
propagation
|
不
|
REQUIRED
|
事务传播行为
|
isolation
|
不
|
DEFAULT
|
事务隔离级别
|
timeout
|
不
|
-1
|
事务超时的时间(以秒为单位)
|
read-only
|
不
|
false
|
事务是否只读?
|
rollback-for
|
不
|
|
将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'
|
no-rollback-for
|
不
|
|
不 被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException'
|
注意:<aop:config>风格的配置使得对Spring auto-proxying 机制的使用变得很笨重。如果你已经通过BeanNameAutoProxyCreator或类似的东西使用显式的auto-proxying将会引发问题 (例如通知没有被织入)。推荐的使用模式是只使用<aop:config>风格或只使用 AutoProxyCreator风格
<!--EndFragment-->
分享到:
相关推荐
**标题:“Hibernate缓存与Spring事务详解”** 在IT领域,尤其是Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。而Spring框架则以其全面的功能,包括依赖注入、AOP(面向切...
Spring事务详解 Spring框架的事务管理功能是Java企业级开发中的重要组成部分,它将事务管理从具体的业务逻辑和数据访问逻辑中独立出来,实现了关注点分离。这种分离不仅降低了事务管理的复杂性,而且增强了代码的可...
### Spring 事务详解 在深入探讨Spring框架中的事务管理机制之前,我们首先需要明确几个基本概念:事务(Transaction)是数据库操作的一个基本单位,如果一个事务成功,则所有的操作都必须成功;如果其中一个操作...
这个方法通常由框架(如 Spring 框架)提供支持,使用起来更加简洁和易于维护。 1. 声明式事务中的注解 注解用于声明事务的属性,比如事务的传播行为、隔离级别、回滚规则等。通过注解,开发者可以将事务管理逻辑...
### Spring Boot 与 Spring 事务详解 #### 一、引言 在现代企业级应用程序开发中,事务管理是一项至关重要的技术。它确保了一系列操作能够作为一个整体成功或失败,从而维护了数据的一致性和完整性。Spring 框架...
### Spring中事务的传播属性详解 #### 一、引言 在使用Spring框架进行应用程序开发时,事务管理是一项非常重要的特性。Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理因其...
在Spring框架中,事务管理是核心功能之一,它为应用程序提供了强大的事务控制能力,确保了数据的一致性和完整性。本文将深入探讨Spring中的几种事务配置方式,帮助开发者更好地理解和运用。 1. **编程式事务管理** ...
Spring事务管理提供了统一的事务处理模型,使得开发者无需关注具体数据库访问技术的事务细节,简化了事务控制代码,提高了代码的可读性和可维护性。无论是使用注解还是AOP配置,都能有效地管理和协调事务,确保应用...
Spring 事务配置是Spring 框架中的重要组成部分,它提供了对数据库操作事务性的管理,确保数据的一致性和完整性。Spring 提供了多种方式来配置事务管理,主要分为编程式事务管理和声明式事务管理。下面将详细介绍这...
一、数据库事务前情提要1、多用户带来的问题mysql数据库和linux操作系统一样支持多用户,不同客户端可能读取相同表。2、不同引擎的锁定机制**MyISAM引擎使用表级锁定机制,InnoDB可以支持到行级锁定(一个客户端修改...
Spring 编程式事务与声明式事务详解 本文将详细解释 Spring 的编程式事务管理及声明式事务管理,帮助读者理清思路。 事务管理的重要性 事务管理对于企业应用至关重要。它保证了用户的每一次操作都是可靠的,即便...