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数据
分享到:
相关推荐
9. **事务管理**:Spring 2.5的事务管理支持包括编程式和声明式两种方式,可以在不侵入业务代码的情况下实现事务的控制。 10. **国际化(i18n)支持**:Spring 2.5提供了更好的国际化支持,使得应用可以轻松地根据...
在Spring 2.5中,对Bean的元数据支持更丰富,包括属性、构造器、工厂方法等的注入方式,同时增强了对JSR-250注解的支持,如`@PostConstruct`和`@PreDestroy`。 4. **Web包**:Spring 2.5的Web模块提供了一个全面的...
4. **Bean表达式语言(Bean Expression Language, BEL)**:Spring EL是Spring 2.5引入的新的表达式语言,用于在运行时查询和操作bean属性,提供了更简便的方式来绑定数据源和UI组件。 5. **增强的类型安全的bean...
2. **AOP(Aspect-Oriented Programming)**:Spring 提供了面向切面编程的支持,允许开发者定义“切面”,这些切面可以跨越多个类的多个方法,实现如日志、事务管理等通用功能。@Aspect 和 @Before、@After、@...
《传智播客 黎活明spring2.5 ppt》是针对Java开发人员的一个培训资料,由知名讲师黎活明主讲,主要讲解了Spring框架2.5版本的相关知识。Spring是一个开源的Java企业级应用框架,它为开发人员提供了一个全面的编程和...
这个"传智播客 spring2.5源代码_lib包"包含了Spring框架2.5版本的库文件,这些库文件对于理解Spring的工作原理、学习如何使用它以及进行相关开发非常有帮助。下面我们将深入探讨Spring 2.5的一些核心概念和功能。 1...
而`Spring2.5开发简明教程中文版.pdf`则可能是针对这个版本的一本实用教程,可以帮助读者深入理解Spring 2.5的各种特性和用法。结合这两个资源,开发者可以系统地学习和掌握Spring 2.5的核心概念和技术。
### Spring2.5框架知识点概览 #### 一、Spring框架简介 Spring框架是一个开源的轻量级Java应用开发框架,旨在简化企业级应用的开发。Spring2.5版本是该系列的一个重要版本,它引入了许多新特性并优化了原有功能。 ...
这本《Spring2.5-中文参考手册》涵盖了以上所有内容的详细解释,包括每个特性的使用方法、示例代码以及问题解决方案。对于希望深入了解Spring框架,尤其是2.5版本的开发者来说,是一份宝贵的资源。尽管版本较旧,但...
Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...
5. Spring的事务管理:允许声明式事务管理,可以通过简单的XML配置或注解来管理业务对象的事务边界,无论是本地还是JTA事务。 6. Spring表达式语言(SpEL):一种强类型表达式语言,用于在运行时查询和操作对象图。...
Spring MVC在2.5版本中也有了不少提升,包括对RESTful风格的支持、更灵活的视图解析、模型属性绑定以及错误处理等。`@RequestMapping`注解的引入,使得处理HTTP请求变得更加简洁。 7. **资源访问** Spring 2.5...
Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架,它们在2000年代末至2010年初广泛应用于构建大型Web应用程序。这三大框架的集成提供了完整的MVC(Model-View-Controller)架构,支持服务层和持久层...
在2.5版本中,支持XML和注解两种方式来定义Bean及其属性。 3. **AOP(Aspect-Oriented Programming,面向切面编程)**:Spring的AOP模块允许开发者定义切面,将横切关注点(如日志、事务管理)与业务逻辑分离。切面...
【Spring 2.5 教程(传智)】是一个针对初学者的全面Spring框架教程,旨在帮助开发者理解和掌握Spring的核心特性和使用方法。以下是该教程涵盖的主要知识点: 1. **Spring 概述**:Spring是一个开源的Java平台,它...
8. **JSR-303 Bean Validation**:Spring 2.5集成了JSR-303标准,提供了对Bean属性验证的支持,可以方便地进行数据校验。 9. **SpEL(Spring Expression Language)**:Spring 2.5引入了强大的表达式语言,用于在...
4. **Spring的AOP集成**:结合Spring的AOP,我们可以为CXF的服务添加拦截器或过滤器,实现事务管理、日志记录、安全性检查等功能,增强了服务的灵活性和安全性。 5. **CXF的Bus对象**:CXF的Bus对象是整个框架的...
8. **JSR-303 Bean验证**:Spring 2.5引入了对JSR-303标准的支持,可以通过注解实现模型属性的校验。 9. **Spring Expression Language (SpEL)**:Spring 2.5引入了强大的表达式语言,可以在运行时查询和操作对象,...