1、了解事务的几种传播特性
1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务。如果没有事务则开启
2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行
3. PROPAGATION_MANDATORY: 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
4. PROPAGATION_REQUIRES_NEW: 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
5. PROPAGATION_NOT_SUPPORTED: 总是非事务地执行,并挂起任何存在的事务。
6. PROPAGATION_NEVER: 总是非事务地执行,如果存在一个活动事务,则抛出异常
7. PROPAGATION_NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务,
则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
2、Spring事务的隔离级别
1. ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
另外四个与JDBC的隔离级别相对应
2. ISOLATION_READ_UNCOMMITTED: 这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。
3. ISOLATION_READ_COMMITTED: 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据
4. ISOLATION_REPEATABLE_READ: 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。
5. ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
除了防止脏读,不可重复读外,还避免了幻像读。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zyj8170/archive/2009/03/03/3953720.aspx
分享到:
相关推荐
#### 三、详细解释每种传播特性 - **PROPAGATION_REQUIRED**:这是最常用的事务传播行为,如果当前存在事务,则当前方法将在该事务中运行;如果当前不存在事务,则会创建一个新的事务,并在该事务中运行当前方法。...
### Spring事务的传播特性和隔离级别 #### 一、事务的基本概念 在计算机科学中,事务(transaction)是指一系列操作的集合,这些操作要么全部成功完成,要么全部失败回滚,确保数据的一致性和完整性。事务具备四个...
下面详细介绍 Spring 的几种事务传播特性: 1. **PROPAGATION_REQUIRED** - **定义**:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 - **应用场景**:这是最常用的一种事务传播特性...
此外,Spring 事务管理还涉及到事务隔离级别(如 READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE)和事务超时设置等高级特性。这些都可以通过配置或者注解进行定制,以满足不同业务场景的需求。 ...
在Spring中,事务的传播行为有七种: - `REQUIRED`:默认行为,如果当前没有事务,则新建一个;如果已经存在事务,则加入到当前事务。 - `SUPPORTS`:如果当前存在事务,则支持事务;如果没有事务,则不开启。 - `...
Spring 提供了一种抽象化的事务管理方式,使得开发者可以更加专注于业务逻辑而不是底层事务处理的细节。 ##### 1. 核心接口 Spring 的事务管理涉及到几个核心接口,其中最重要的是 `PlatformTransactionManager` ...
Spring提供了声明式事务管理和编程式事务管理两种方式,其中声明式事务管理因其实现简单而被广泛应用。声明式事务主要通过Spring AOP(面向切面编程)来实现,它允许在方法执行前后添加事务逻辑而不改变原有代码逻辑。...
Spring 提供了七种传播行为,如 REQUIRED(默认,如果当前没有事务,则新建一个)、SUPPORTS(如果当前存在事务,则加入,否则不创建)、MANDATORY(如果当前存在事务,则加入,否则抛异常)、REQUIRES_NEW(总是...
Spring框架提供了以下几种传播行为: 1. **PROPAGATION_REQUIRED** - 表示当前方法必须运行在事务中。如果当前事务存在,方法将会在该事务中运行;否则,会启动一个新的事务。 2. **PROPAGATION_SUPPORTS** - ...
综上所述,Spring 事务管理提供了一套完整的解决方案,包括不同的传播行为、隔离级别和只读标志等特性,可以帮助开发者更灵活地控制事务的行为,从而更好地满足不同业务场景的需求。在实际应用中,选择合适的事务...
4. **事务的传播行为**:在编程式事务中,我们需要了解Spring定义的7种事务传播行为,例如PROPAGATION_REQUIRED(默认行为,如果当前存在事务,则加入到该事务;如果当前没有事务,则创建一个新的事务)、...
通过深入学习和实践这些内容,你可以更好地掌握Spring框架的事务管理特性,从而提高应用的稳定性和可靠性。在实际项目中,声明式事务管理通常更为推荐,因为它可以减少事务管理代码,提高代码的可读性和可维护性。
然后,我们需要配置事务的传播特性。Spring提供了七种事务传播行为,例如`REQUIRED`(如果存在事务,则加入该事务;如果不存在,则创建一个新的事务)。在配置文件中,我们可以使用`tx:advice`和`tx:method`来指定...
全局事务服务GTS(Global Transaction Service)是阿里云推出的一种分布式事务解决方案,它支持跨数据库、跨服务的分布式事务,保证了在分布式环境下的ACID(原子性、一致性、隔离性和持久性)特性。GTS适用于需要...
在 Spring 中有两种事务控制方式: 1. 编程式事务管理:通过手动编码控制事务的边界,可以实现细粒度的事务控制,一般用的较少。 2. 声明式事务管理:只需要在 Spring 中添加一些配置文件或者使用注解,即可实现将...
在 EJB 应用程序中,事务主要通过以下几种方式管理: - **容器管理的事务**:容器自动管理事务,开发者无需直接编写事务相关的代码。事务的特性和行为可通过注解或配置文件来声明。 - **编程式事务**:开发者直接...
2. **事务传播行为**:定义方法之间的事务传播规则,如PROPAGATION_REQUIRED(默认,如果当前存在事务,则加入,否则新建)等。 3. **事务开始**:当@Transactional注解的方法被调用时,Spring会检查当前是否存在...
在事务的隔离级别中,有以下几种: - 读未提交(Read Uncommitted):允许读取未提交的数据,可能导致脏读。 - 读已提交(Read Committed):解决了脏读问题,但可能产生不可重复读。 - 可重复读(Repeatable Read)...
在OSGi(Open Service Gateway Initiative)环境中配置Spring事务可能会遇到一些挑战,因为OSGi的模块化特性使得类加载和依赖管理变得复杂。本篇文章将详细探讨如何在OSGi环境中正确配置Spring事务管理。 首先,...