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-->
分享到:
相关推荐
spring 事务详解 关于标注 事务注解 不清楚的可以看看
Spring的事务框架将开发过程中事务管理相关的关注点进行适当的分离,并对这些关注点进行合 理的抽象,最终打造了一套使用方便,却功能强大的事务管理“利器”。通过Spring的事务框架,我 们可以按照统一的编程模型来...
NULL 博文链接:https://jyao.iteye.com/blog/1299178
spring事务配置详解 spring事务配置详解
Spring中事务的传播属性详解,Spring中事务的传播属性详解
spring几种事务配置,spring几种事务配置详解【精】
一、数据库事务前情提要1、多用户带来的问题mysql数据库和linux操作系统一样支持多用户,不同客户端可能读取相同表。2、不同引擎的锁定机制**MyISAM引擎使用表级锁定机制,InnoDB可以支持到行级锁定(一个客户端修改...
spring编程式事务与声明式事务详解,超详细!
Spring : 春天 —>给软件行业带来了春天 2002年,Rod Jahnson首次推出了Spring框架雏形...你是否不了解spring,到底是什么,一张图完美诠释了spring的组成,优点,代理设计模式,面向切面编程,事务,整合mybatis等等。
JSP 中spring事务配置详解.docx