`

知识点八-2 :spring 2.5 事务属性

阅读更多
spring事务的属性

1•关于事务默认的回滚
一. 事务碰到unchecked  Exception ,默认情况下自动回滚,如果想取消自动回滚可以指定属性 @Transactional(noRollbackFor=RuntimeException.class)
二. 事务碰到checked Exception,默认情况下事务不回滚,如果想回滚可以用属性指定@Transactional(rollbackFor=Exception.class)
三. 当然事务属性中的另外一个也是可以的不过要指定的是类名noRollbackForClassName

2•事务的开启与关闭(默认情况下spring是开启事务的)
@Transactional(propagation=Propagation.NOT_SUPPORTED)
public List<StudentBean> getAllStudent() {
return jdbcTemplate.query("select * from student", new StudentRowMapper());
}

3•@Transactional(readOnly=true)

只读事务,就是不用控制,可以提高效率
下面是事物的其它属性

4•@Transactional(timeout=1000)
事务时间

5·事务的传播属性
@Transactional(propagation=Propagation.NOT_SUPPORTED)

REQUIRED: 业务方法需要在一个事务中运行。如果方法运行时,已经在一个事务中,哪么加到该事务,否则为自己创建一个新的事务。Spring默认的事务传播属性设置@Transactional(propagation=Propagation.REQUIRED)

NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为它开启事务。如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会恢复执行。

REQUERESNEW:属性表明不管是否存在事务,业务方法总会为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有的事务会被挂起,新的事务会被创建,直到方法执行结束,新事务才算结束,原先的事务才会恢复执行。

MANDATORY:该属性指定业务方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果业务方法在没有事务的环境下调用,容器就会抛出异常。

SUPPORTS:这一事务属性表明,如果业务方法在某个事务范围内被调用,则方法成为该事务的一部分。如果业务方法在事务范围外被调用,则方法在没有事务的环境下执行

NEVER::指定业务方法绝对不能在事务范围内执行。如果业务方法在某个事务范围内执行,则容器抛出异常,只有业务方法没有关联到任何事务,才能正常执行。

NESTED:如果一个事务存在,则运行在一个嵌套的事务中,如果没有活动事务,则按REQUIRED属性执行,它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionalmaManager事务管理器起效。

比如:一个get方法是不需要事务的,加上事务会影响效率的,这时我们可以加上这个属性设置:@Transactional(propagation=Propagation.NOT_SUPPORTED)。这时此方法就不会有事务控制了。

像save、update等业务方法默认都是要事务控制的
@Transactional(propagation=Propagation.REQUEIRED)---这个是默认的,可以省写


6·属性isolation—事务的隔离级别


@Transactional(isolation=Isolation.READ_UNCOMMITTED)

数据库系统提供了四种事务隔离级别(隔离级别是当数据库并行访问操作时,安全策略的实现)
数据库系统提供了四种事务隔离级别供用户选中。不同的隔离及、别采用不认同的锁类型来实现(共享锁、更新锁、排它锁),在四种隔离级别中,Serializable的隔离级别最高,Read Uncommited的隔离级别最低。大多数据库默认的隔离级别为Read Commited,如sql server,当然也有少数部分数据库默认的隔离级别为Repeatable Read,如mysql
Read Uncommited:读未提交数据(会出现脏读,不可重复读和幻读)
Read Commited:读已提交数据(会出现不可重复读和幻读)
Repeatable Read:可重复读(会出现幻读)
Serializable:串行化

脏读:一个事物读到另一个事务未提交的更新数据
不可重复读:在同一个事务中,多次读取同一数据返回的结果有所不同。换句话就是,后续读可以读到另一个事务已提交的更新数据。相反,“可重复读”在同一事务中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能道道另一个事务已提交的更新数据
幻读:一个事务读取到另一个事务已提交的insert数据
分享到:
评论

相关推荐

    spring-framework-2.5-rc2-with-dependencies\spring-framework-2.5-rc2\spring-framework-2.5-rc2源代码

    Spring的AOP模块允许开发者定义横切关注点,如事务管理、日志记录等,这些关注点可以独立于业务逻辑进行处理。 在源代码中,`src`目录下包含了所有源代码文件,包括Spring的核心模块、Web模块以及其他相关组件。...

    spring2.5的所有jar包

    以下是关于Spring 2.5的一些关键知识点: 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,允许对象之间的依赖关系在运行时由框架动态管理。通过DI,开发者可以降低代码间的耦合度,提高组件...

    Spring2.5 源代码

    让我们深入探讨一下Spring 2.5中的核心知识点。 1. **依赖注入(Dependency Injection, DI)**: Spring的核心特性之一就是依赖注入,它允许对象之间的依赖关系在运行时由容器管理,而不是硬编码在类内部。在...

    Spring2.5-Reference_zh_CN.txt

    ### Spring2.5框架知识点概览 #### 一、Spring框架简介 Spring框架是一个开源的轻量级Java应用开发框架,旨在简化企业级应用的开发。Spring2.5版本是该系列的一个重要版本,它引入了许多新特性并优化了原有功能。 ...

    spring2.5常用包

    让我们详细探讨一下 Spring 2.5 中的一些关键知识点: 1. **IoC(Inversion of Control)容器**:Spring 的核心特性是依赖注入(Dependency Injection,DI),通过 IoC 容器来管理对象的生命周期和对象之间的依赖...

    spring-framework-2.5开发库

    以下是关于 Spring Framework 2.5 的一些关键知识点: 1. **依赖注入 (Dependency Injection, DI)**:Spring 2.5 对依赖注入的支持进一步增强,使得组件间的依赖关系更加灵活和可管理。DI 是通过容器来管理对象的...

    ssh框架jar包之spring2.5

    下面我们将详细阐述Spring 2.5中的关键特性与知识点: 1. **依赖注入(Dependency Injection, DI)**:Spring 2.5增强了DI机制,使得开发者能够更方便地管理对象间的依赖关系。DI允许我们通过配置文件或注解来定义...

    传智播客 黎活明spring2.5 ppt

    《传智播客 黎活明spring2.5 ppt》是针对Java开发人员的一个培训资料,由知名讲师黎活明主讲,主要讲解了Spring框架2.5版本的相关知识。Spring是一个开源的Java企业级应用框架,它为开发人员提供了一个全面的编程和...

    spring 2.5中文帮助文档

    在Spring 2.5版本中,有以下几个关键的知识点: 1. **依赖注入**:这是Spring的核心特性,允许开发者将对象的创建和管理职责从代码中解耦出来。通过配置文件或注解,Spring能够自动装配对象之间的依赖关系,简化了...

    spring2.5源码

    下面我们将深入探讨Spring 2.5源码中的关键知识点。 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一是DI,它允许对象之间的依赖关系在运行时通过配置或编程方式注入。在Spring 2.5中,DI...

    spring 2.5开发手册

    以下是基于Spring 2.5的一些关键知识点: 1. **依赖注入(Dependency Injection, DI)**:Spring 2.5的核心特性之一是依赖注入,它允许开发者声明性地管理对象间的依赖关系,降低了代码的耦合度,提高了可测试性。...

    最新spring2.5帮助文档

    以下是对Spring 2.5版本关键知识点的详细解析: 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,允许开发者在运行时通过配置文件或注解来管理对象间的依赖关系,而不是硬编码这些依赖。在...

    传智播客 spring2.5源代码_lib包

    2. **AOP(面向切面编程)**: Spring 2.5提供了全面的AOP支持,用于处理横切关注点,如日志、事务管理等。AOP通过定义切点(Pointcut)、通知(Advice)和切面(Aspect)来实现,允许开发者编写更模块化的代码。 3....

    spring 2.5 jar常用包

    以下是一些关于Spring 2.5中关键知识点的详细解释: 1. **依赖注入(Dependency Injection, DI)**:Spring 2.5对依赖注入的支持进一步增强,允许开发者通过注解(@Autowired)来简化配置。这使得对象之间的依赖关系...

    spring2.5所用到的jar包

    下面,我们将深入探讨Spring 2.5中的关键知识点。 1. **依赖注入(Dependency Injection, DI)**: Spring的核心特性之一就是依赖注入,它允许对象在运行时通过容器来管理它们的依赖关系,而不是硬编码这些依赖。...

    Spring2.5中文帮助文档

    以下是Spring 2.5中文帮助文档中的主要知识点: 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性,通过DI容器管理对象的创建和对象之间的依赖关系,降低了组件间的耦合度。在Spring 2.5中,DI...

    spring2.5 所需所有jar包和源文件

    以下是对Spring 2.5中关键知识点的详细解释: 1. **依赖注入(Dependency Injection, DI)**:Spring 2.5中的DI机制允许对象之间的依赖关系在运行时通过容器进行管理,而不是在代码中硬编码。这增强了代码的可测试性...

    spring 2.5框架图

    2. **AOP**:Spring的AOP模块提供了一种在不修改代码的情况下,实现横切关注点(如日志、事务管理)的方式。在Spring 2.5中,AOP支持更灵活的切入点表达式和更多类型的切面,如注解驱动的切面,这使得AOP更加易用和...

    spring2.5 api 完全参考手册chm api

    了解并熟练运用上述知识点,对于初学者来说,是快速掌握Spring框架的关键。通过阅读《Spring 2.5 API 完全参考手册》,开发者可以深入理解每个类、接口和方法的用途,从而更好地利用Spring进行开发。

    spring2.5中文操作手册

    以下是对Spring 2.5中文操作手册的详细知识点解析: 1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,允许开发者通过配置文件或注解来声明组件之间的依赖关系,而不是硬编码在代码中。这使得...

Global site tag (gtag.js) - Google Analytics