`

spring 2.5 事务属性

阅读更多

spring事务的属性

转载自http://zhangli-lisa.iteye.com/blog/400383

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数据

分享到:
评论

相关推荐

    spring2.5的所有jar包

    9. **事务管理**:Spring 2.5的事务管理支持包括编程式和声明式两种方式,可以在不侵入业务代码的情况下实现事务的控制。 10. **国际化(i18n)支持**:Spring 2.5提供了更好的国际化支持,使得应用可以轻松地根据...

    spring 2.5框架图

    在Spring 2.5中,对Bean的元数据支持更丰富,包括属性、构造器、工厂方法等的注入方式,同时增强了对JSR-250注解的支持,如`@PostConstruct`和`@PreDestroy`。 4. **Web包**:Spring 2.5的Web模块提供了一个全面的...

    spring2.5中文文档

    4. **Bean表达式语言(Bean Expression Language, BEL)**:Spring EL是Spring 2.5引入的新的表达式语言,用于在运行时查询和操作bean属性,提供了更简便的方式来绑定数据源和UI组件。 5. **增强的类型安全的bean...

    spring2.5常用包

    2. **AOP(Aspect-Oriented Programming)**:Spring 提供了面向切面编程的支持,允许开发者定义“切面”,这些切面可以跨越多个类的多个方法,实现如日志、事务管理等通用功能。@Aspect 和 @Before、@After、@...

    传智播客 黎活明spring2.5 ppt

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

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

    这个"传智播客 spring2.5源代码_lib包"包含了Spring框架2.5版本的库文件,这些库文件对于理解Spring的工作原理、学习如何使用它以及进行相关开发非常有帮助。下面我们将深入探讨Spring 2.5的一些核心概念和功能。 1...

    Spring2.5开发PDF+Spring2.5CHM

    而`Spring2.5开发简明教程中文版.pdf`则可能是针对这个版本的一本实用教程,可以帮助读者深入理解Spring 2.5的各种特性和用法。结合这两个资源,开发者可以系统地学习和掌握Spring 2.5的核心概念和技术。

    spring2.5的applicationContext配置文件

    9. **事务管理**:Spring 2.5提供了声明式事务管理,可以在`&lt;tx:annotation-driven/&gt;`标签下启用,使事务管理与业务代码分离。 10. **MVC配置**:对于Web应用,`applicationContext.xml`常与`servlet-context.xml`...

    Spring2.5-中文参考手册(这是个chm格式的文档)

    这本《Spring2.5-中文参考手册》涵盖了以上所有内容的详细解释,包括每个特性的使用方法、示例代码以及问题解决方案。对于希望深入了解Spring框架,尤其是2.5版本的开发者来说,是一份宝贵的资源。尽管版本较旧,但...

    struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...

    spring2.5源码

    Spring MVC在2.5版本中也有了不少提升,包括对RESTful风格的支持、更灵活的视图解析、模型属性绑定以及错误处理等。`@RequestMapping`注解的引入,使得处理HTTP请求变得更加简洁。 7. **资源访问** Spring 2.5...

    struts2.0 spring2.5 hibernate3.2 注解最新框架

    Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架,它们在2000年代末至2010年初广泛应用于构建大型Web应用程序。这三大框架的集成提供了完整的MVC(Model-View-Controller)架构,支持服务层和持久层...

    spring2.5 中文参考手册

    在2.5版本中,支持XML和注解两种方式来定义Bean及其属性。 3. **AOP(Aspect-Oriented Programming,面向切面编程)**:Spring的AOP模块允许开发者定义切面,将横切关注点(如日志、事务管理)与业务逻辑分离。切面...

    Spring2.5中文帮助文档

    8. **JSR-303 Bean Validation**:Spring 2.5集成了JSR-303标准,提供了对Bean属性验证的支持,可以方便地进行数据校验。 9. **SpEL(Spring Expression Language)**:Spring 2.5引入了强大的表达式语言,用于在...

    CXF与Spring 2.5整合

    4. **Spring的AOP集成**:结合Spring的AOP,我们可以为CXF的服务添加拦截器或过滤器,实现事务管理、日志记录、安全性检查等功能,增强了服务的灵活性和安全性。 5. **CXF的Bus对象**:CXF的Bus对象是整个框架的...

    ssh框架jar包之spring2.5

    8. **JSR-303 Bean验证**:Spring 2.5引入了对JSR-303标准的支持,可以通过注解实现模型属性的校验。 9. **Spring Expression Language (SpEL)**:Spring 2.5引入了强大的表达式语言,可以在运行时查询和操作对象,...

    spring2.5_学习笔记

    《Spring 2.5 学习笔记》 在IT领域,Spring框架是Java企业级应用开发的首选框架,而Spring 2.5是其发展历史中的一个重要里程碑。本笔记将深入探讨Spring 2.5的核心特性,帮助读者理解并掌握这一版本的精髓。 一、...

    spring 2.5 jar常用包

    9. **数据访问**:在Spring 2.5中,对JDBC、Hibernate、JPA等数据访问技术的支持也得到了加强,包括事务管理、ORM集成等。 10. **国际化(i18n)**:Spring 2.5提供了强大的国际化支持,可以通过ResourceBundle和...

Global site tag (gtag.js) - Google Analytics