`

Spring中事务的属性(藏)

阅读更多


Spring 中事务的属性
1.传播行为
定义了关于客户端和被调用方法的事务边界。传播规则就是在说明新的事务是否要被启动或是挂起,或者方法是否要在事务环境中运行。
spring定义了7种不同的传播行为。
1)PROPAGATION_MANDATORY
  表明方法必须要在事务中运行。如果事务不存在,抛出异常
2)PROPAGATION_NESTED
  表示如果当前已经存在一个事务,则该方法应当运行在一个嵌套的事务中。被嵌套的事务可以从当前事务中单独地提交或回滚。如果当前事务不存在,就相当于PROPAGATION_REQUIRED
3)PROPAGATION_NEVER
表示当前的方法不应该运行在一个事务上下文中。如果当前存在一个事务,则会抛出一个异常。
4)PROPAGATION_NOT_SUPPORTED
表示该方法不应该在事务中运行。如果一个现有的事务正在运行中。它将在该方法的运行期间被挂起
5)PROPAGATION_REQUIRED
表示当前方法必须运行在一个事务中。如果一个现有的事务正在运行中,该方法将运行在这个事务中。否则的话,就要开始一个新的事务。
6)PROPAGATION_REQUIRES_NEW
表示当前方法必须运行在它自己的事务中。如果一个现有事务在运行的话,将在这个方法运行期间被挂起。
7)PROPAGATION_SUPPORTS
表示当前方法不需要事务处理环境,但如果有一个事务已经在运行的话,这个方法也可以在这个事务中运行
2.隔离级别
多个事务并发运行的关系。因为并发会导致以下问题
.脏读(Dirty read) 一个事务读取了被另一个事务改写但还没提交的数据。
.不可重复读(Nonrepeatable read) 一个事务执行相同的查询两次或两次以上,但每次查询结果都不同时。这由于另一个并发事务在两次查询之间更新了数据
.幻读(Phantom read)
当一个事务读取几行记录后,另一个并发事务插入一些记录,就发生了幻读
spring定义了以下5种隔离关系
1)ISOLATION_DEFAULT
使用后端数据库默认得隔离级别
2)ISOLATION_READ_UNCOMMITTED
允许你读取还未提交的改变了的数据。可能导致脏读,不可重复读,幻读
3)ISOLATION_READ_COMMITTTED
运行在并发事务已经提价后读取。可防止脏读,但不可重复读,幻读都有可能发生
4)ISOLATION_REPEATABLE_READ
对相同字段的多次读取结果是一致的,除非数据被事务本身。可防止脏读,不可重复读,但幻读仍可能发生。
5)ISOLATION_SERIALIZABLE
完全服从ACID的隔离级别,确保不发生脏读,不可重复读,幻读。它的典型做法就是完全锁定在事务中涉及的数据表。因此它是最慢地。
3.只读提示
通过只读属性,数据库可以对事务进行优化。
4.事务超时时间
设置了的话,事务在超过这个时间后就自动回滚。避免占用资源过久。

分享到:
评论

相关推荐

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    Java语言基础下载

    目录 第一章:Java开始 1 学习目标 1 Java历史 2 Java技术概述 3 Java技术的优点 3 Java虚拟机 4 类加载器 6 ...Spring事务管理 718 Spring与Struts整合 719 Spring与Hibernate整合 721 独立实践 724

    java面试题

    答:声明式的事务管理主要是将在进行对数据库中数据的添加或者修改时需要执行事务管理,主要是为了避免在执行添加或修改的时候添加或修改不完全正确,导致数据丢失。spring使用AOP面向切面的思想进行事务管理的。 ...

    iBATIS实战

    书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的...

    J2EE应用开发详解

    199 11.5.1 JMS 200 11.5.2 消息驱动Bean的生命周期 202 11.5.3 创建消息驱动Bean 202 11.6 实体Bean 203 11.6.1 实体Bean的特性 204 11.6.2 实体Bean的分类及组成 204 11.6.3 EJB 3.0中的实体Bean 206 11.7 EJB事务 ...

    asp.net知识库

    从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 ...

    iuhyiuhkjh908u0980

    在Spring中 ...  本文主要探讨如何利用Spring来装配组件,包括其事务上下文。从J2EE应用程序内部连接到单个的数据库并不是什么难事。但是,如果要装配或者集成企业级的组件,情况就复杂了。一个组件可以有一个或多...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.3. Seam 中的可点击列表:消息示例............................................................................................................................. 27 1.3.1. 理解代码.........................

Global site tag (gtag.js) - Google Analytics