http://edwardlauxh.blog.163.com/blog/static/17735444520104715014108/
经常用spring,以前习惯了copy复制其实有时候有些东西自己没有去真正了解,就拿spring的事务注解来讲,深入了解后才会清楚有些时候需要用那种配置.Spring2.x-3.x事务传播行为类型如下图:
对于事务中每个行为的分支选择有:
readOnly
事务属性中的readOnly标志表示对应的事务应该被最优化为只读事务。这是一个最优化提示。在一些情况下,一些事务策略能够起到显著的最优化效果,例如在使用Object/Relational映射工具(如:Hibernate或TopLink)时避免dirty checking(试图“刷新”)。
Timeout
在事务属性中还有定义“timeout”值的选项,指定事务超时为几秒。在JTA中,这将被简单地传递到J2EE服务器的事务协调程序,并据此得到相应的解释。
当我们一般执行查询语句的时候可以使用以下注解
@Transactional(propagation = Propagation.NOT_SUPPORTED, readOnly = true)
查询的时候不需要考虑到数据出错或者数据会回滚的问题,采用Propagation.NOT_SUPPORTED方式不需要为查询建立一个独立的事务进行取数据,当在有事务进行操作的时候会将其进行挂起等待操作完毕才会进行它的读取操作,采用只读的方式优化成为只读方式,保证取出来的数据是准确的,保证不会出现幻读等问题.
进行增删改等操作的时候使用
@Transactional(propagation = Propagation.REQUIRED)
因为增删改经常会出现假数据.空数据之类的,这时候就需要回滚了,如果不设置回滚的话那些假的数据或者坏数据会造成为系统的不稳定因素.
- 大小: 144.2 KB
分享到:
相关推荐
Spring通过`@Transactional`注解可以方便地设置事务传播行为和隔离级别,例如: ```java @Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED) public void ...
Spring的`@Transactional`注解是声明式事务管理的核心,它可以应用于方法级别或类级别。当应用于类时,该类的所有公共方法都将具有声明的事务属性。注解的属性包括`propagation`(传播行为)、`isolation`(隔离级别...
以下是对"spring注解事务管理"这一主题的详细解释。 ### 1. Spring事务管理的基本概念 Spring事务管理主要分为两种方式:编程式事务管理和声明式事务管理。编程式事务管理是通过编写代码来控制事务的开始、提交、...
注解中可以包含多个属性,如`value`(指定事务管理器)、`propagation`(事务传播行为)、`isolation`(事务隔离级别)、`readOnly`(是否只读事务)等,以定制事务的行为。 3. **事务传播行为** 事务传播行为定义...
- 在Service层的方法上添加@Transactional注解,指定事务的传播行为(如REQUIRED、REQUIRES_NEW等)和隔离级别。 - 在DAO层,使用Hibernate的Session和Query对象进行数据库操作,Spring会在事务的上下文中管理这些...
"spring注解式事务" Spring框架提供了基于注解的方式来管理事务,使用@Transactional注解来标记需要事务管理的方法。该注解可以被应用于public方法上,对于非public方法,如果标记了@Transactional也不会报错,但...
注解中的属性包括`propagation`(事务传播行为)、`isolation`(隔离级别)、`readOnly`(只读事务)、`timeout`(超时时间)和`rollbackFor`(触发回滚的异常类型)等。 2. 事务传播行为(Propagation): Spring...
Spring框架支持基于注解的事务管理,这使得在方法级别声明事务边界变得非常简单。主要使用的注解有`@Transactional`,它可以应用到方法或类上,表示该方法或类的所有方法都在一个事务内执行。 3. **@Transactional...
- @Transactional注解:在方法或类级别使用,声明方法属于哪个事务范围。 - AspectJ注解驱动:结合AspectJ,可以在编译时或加载时织入事务控制逻辑。 - Annotation-driven配置:在Spring应用上下文中启用注解驱动...
在本篇Spring学习笔记中,我们将探讨如何使用Spring框架的注解方式来管理事务,这是一种在现代Java应用中广泛采用的方法。Spring框架以其强大的依赖注入和面向切面编程能力,为事务管理提供了简洁且高效的解决方案。...
- **isolation**:设置事务的隔离级别,如DEFAULT(使用数据库默认)、READ_UNCOMMITTED(最低,允许脏读)、READ_COMMITTED(防止脏读,允许不可重复读)、REPEATABLE_READ(防止脏读和不可重复读,但可能出现幻读...
接下来,我们将深入探讨`@Transactional`注解以及Spring中的事务隔离级别。 1. **什么是事务** 事务是数据库操作的基本单元,它确保一组数据库操作要么全部成功,要么全部失败。事务的存在是为了维护数据库的一致...
在Spring中,我们可以使用@Transactional注解来标记需要进行事务管理的方法。这个注解包含了一些可选属性,如`propagation`(事务传播行为)、`isolation`(隔离级别)、`timeout`(超时时间)和`rollbackFor`(触发...
Spring事务注解的使用使得开发者可以轻松地在应用程序代码中控制事务边界,而无需手动管理数据库连接和事务。通过结合MySQL的事务隔离级别设置和Spring的事务管理,可以有效地确保数据一致性并优化并发性能。
2. **声明式事务管理**:这是Spring最常用的方式,通过在配置文件或者使用`@Transactional`注解来定义事务边界,使得事务管理与业务逻辑分离,降低了代码的耦合度。`@Transactional`注解可以应用于方法级别,表示该...
例如,可以使用@Transactional注解在方法级别声明一个事务,该方法内的所有数据库操作将在同一个事务中执行。 文件名如"spring-jdbc-tran1"、"spring-jdbc-tran2"和"spring-jdbc-tran3"暗示了实验可能涉及Spring与...
在Spring中,可以通过`@Transactional`注解来指定事务的传播特性和隔离级别,如: ```java @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) public void ...
在实际开发中,通过注解方式实现声明式事务管理时,可以在接口的方法上添加@Transactional注解,并通过注解的属性来定制事务行为,如隔离级别、传播行为等。如果采用XML配置方式,则需要在Spring的XML配置文件中进行...
这篇“Spring注解学习手札(五)——业务层事务处理”深入探讨了如何使用注解来管理应用程序中的事务,确保数据的一致性和完整性。Spring提供了声明式事务管理,使得开发者无需编写繁琐的事务控制代码,只需在方法上...