`
njuptsoz
  • 浏览: 91835 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring的事务管理入门:事务的属性

阅读更多

事务参数,也就是事务属性,也就是事务的特有性质。

 

事务的参数定义是在接口 TransactionDefinition 中定义的。

 

首先是隔离级别(isolation),隔离级别,也就是一个事务与其他并发事务之间的数据共享程度的级别。

 

TransactionDefinition有如下五个定义:

// 使用数据库默认的级别
ISOLATION_DEFAULT

//只能读取已经提交的数据,这样可以防止脏读,但是可能会发生不可重复读和幻读
ISOLATION_READ_COMMITTED

//可以读取尚未提交的数据。这样就有可能发生脏读、不可重复读、幻读
ISOLATION_READ_UNCOMMITED

//可以做到读取同一字段的数据都是一致的,这样就可以防止脏读和不可重复读
ISOLATION_REPEATABLE_READ 

//符合ACID,也就是事务的完整性,定义了这一个隔离级别,不会发生什么脏读、不可重复读、幻读等
//但是相应的是以性能为代价的。
ISOLATION_SERIALIZABLE 
 

然后就是传播属性了。传播属性,也就是定义事务的边界问题。

TransactionDefinition定义了7个传播属性,如下:

//顾名思义,强制的,也就是说,当前方法必须在事务中,如果不在事务中,就会抛出异常
PROPAGATION_MANDATORY 

//支持嵌套事务,也就是事务中再加一个事务。
PROPAGATION_NESTED 

//从不事务,如果在事务中运行,就会抛出异常
PROPAGATION_NEVER 

//不支持异常,如果在事务中运行,那么会被挂起
PROPAGATION_NOT_SUPPORTED 

//要求事务,必须在事务中运行,如果没有事务,就新建一个事务
PROPAGATION_REQUIRED 

//要求新事物,不管什么情况,都新建一个事务
PROPAGATION_REQUIRES_NEW 

//支持事务,有事务就用,没有事务就不用。不会自己去新建事务
PROPAGATION_SUPPORTS 

 

此外,TransactionDefinition还有一个字段:TIMEOUT_DEFAULT

这个就是控制事务的超时时间,规定事务必须在多长时间内完成。

 

还有一个 readyOnly选项,TransactionDefinition定义了一个方法:isReadyOnly。据说如果是 radyonly,事务就会进行一定的优化,使得事务是只读的。

 

 

 

 

 

 

 

 

 

2
0
分享到:
评论

相关推荐

    Spring 基础和入门:Struts2+Spring整合

    将两者整合可以利用Struts2的前端控制器和动作处理能力,结合Spring的依赖注入和事务管理,实现更高效、灵活的应用架构。 **整合流程** 1. **添加依赖**:首先在项目中引入Struts2和Spring的相关库,确保项目能够...

    spring 从入门到精通

    压缩包内包含了众多spring学习资料如:Spring从入门到精通.pdf ,spring+...spring事务.pdf,Spring_Framework-3-AOP.ppt,Spring-Hibernate_Frameworks.ppt等学习资料 都是经过我认真帅选过的学习资料,分享给大家用一用

    Spring 事务 代码

    虽然提供的示例是入门级别的,但它揭示了Spring事务管理的核心概念,为进一步学习和理解Spring事务处理的高级特性奠定了基础。在实际项目中,我们需要根据需求选择合适的配置,确保事务的正确性和数据的一致性。

    spring入门到精通.pdf

    Spring作为Java企业级应用开发中的核心框架,它提供了丰富的功能,包括依赖注入、面向切面编程、事务管理、数据访问以及Web应用程序的支持。这本书的目的是帮助初学者快速掌握Spring的核心概念和技术,并逐步提升至...

    Spring初学者入门教程 PDF带书签高清版

    而面向切面编程则允许开发者将关注点分离,如日志、事务管理等,从而提高代码的整洁性和模块化。 本教程的PDF版带有书签,便于读者快速定位到感兴趣的章节。高清的版面设计确保了阅读体验,同时支持文字复制,方便...

    spring从入门到精通

    6. **Spring事务管理**:Spring的事务管理支持编程式和声明式两种方式,使得在多层架构中管理事务变得简单,无论是在单个服务还是分布式环境中。 7. **Spring Boot**:Spring Boot是Spring的另一个重要项目,用于...

    spring教程,spring入门

    Spring提供了丰富的功能,包括数据访问、事务管理、Web开发、安全控制等多个方面,使得开发者能够更专注于业务逻辑,而不是基础设施的实现。 1. **Spring的核心概念**: - **依赖注入(Dependency Injection,DI)...

    一本很不错的关于spring入门的书籍

    2. **面向切面编程(Aspect-Oriented Programming,简称AOP)**:AOP允许程序员定义“切面”,这些切面可以封装跨越多个对象的行为,如日志、事务管理等。Spring的AOP支持基于代理的切面和基于注解的切面。 3. **...

    《Spring入门经典》源代码

    《Spring入门经典》是一本由Mert Caliskan和Kenan Sevindik共同撰写的书籍,主要面向希望深入理解并掌握Spring框架的初学者。Spring是Java领域中最为广泛使用的开源框架,它提供了一个全面的编程和配置模型,旨在...

    spring框架快速入门

    - **容器管理的事务**:Spring框架提供了强大的事务管理功能,可以轻松地控制事务的边界,支持本地事务和分布式事务。 #### 三、Spring框架与SSH组合 - **Struts**:用于构建Web应用的MVC框架,主要负责处理用户...

    Spring初学者入门教程

    2. **Spring事务管理**:Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。 3. **使用Spring管理事务**:开发者可以通过配置或注解来指定事务边界。 #### 框架整合 1. **SSH(Struts + Spring + ...

    spring声明式事务管理_入门

    spring声明式事务管理_入门

    spring源码从入门到放弃

    7. **AOP(面向切面编程)**:Spring的AOP模块用于实现横切关注点,如日志、事务管理等。通过源码,我们可以看到代理模式和织入过程。 8. **Bean生命周期管理**:源码分析可以帮助我们理解bean的创建、初始化、销毁...

    基于框架的Web开发-spring事务入门一个转账的例子.doc

    本文将通过一个简单的转账案例来讲解Spring事务管理的基本概念和使用。 ### 事务的理解 事务是数据库操作的基本单位,它保证了一组操作的原子性、一致性、隔离性和持久性(ACID特性)。 1. **原子性**:事务中的...

    spring cloud事务从入门到精通

    1课程的介绍 2数据库事务的介绍 3mysq|事务讲解 4mysq|-JDBC事务讲解1 5mysqI-JDBC事务讲解2 6搭建一个spring-boot项目 7idea插件easycode 8spring-boot标签事务 ...11spring-boot jta多数据源事务实例

    Eclipse_Spring_入门书籍

    7. **数据访问**:讲解Spring对JDBC、Hibernate、MyBatis等持久层框架的支持,以及事务管理的配置和策略。 8. **Spring测试**:如何使用Spring提供的测试支持进行单元测试和集成测试,包括Mockito等测试工具的配合...

    Spring入门书籍

    6. **事务管理**:讲解Spring的事务管理功能,包括编程式事务管理和声明式事务管理,以及事务的传播行为。 7. **AOP**:阐述面向切面编程的基本原理,如何定义切面、通知类型以及如何在Spring中实现AOP。 8. **...

    Spring入门经典 ((美)Mert Caliskan著) 中文

    5. **AOP**:Spring的面向切面编程,用于实现关注点分离,如日志记录、事务管理等,可以作为核心业务逻辑之外的补充。 6. **数据访问**:Spring对JDBC、ORM(对象关系映射)框架如Hibernate和MyBatis的支持,以及...

    spring data jpa入门实例

    在 Spring 的配置文件中,需要配置 JPA 的数据源、事务管理器以及 Repository 扫描路径。例如: ```xml <bean id="entityManagerFactory" class="org.springframework.orm.jpa....

Global site tag (gtag.js) - Google Analytics