事务传播特性了解事务的几种传播特性
|
数据库操作1
|
数据库操作2
|
PROPAGATION_REQUIRED
|
Transaction1
|
Transaction1
|
null
|
Transaction2
|
PROPAGATION_SUPPORTS
|
Transaction1
|
Transaction1
|
null
|
null
|
PROPAGATION_MANDATORY
|
Transaction1
|
Transaction1
|
null
|
Throws
Exception
|
PROPAGATION_REQUIRES_NEW
|
Transaction1
|
Transaction2
|
null
|
Transaction2
|
PROPAGATION_NOT_SUPPORTED
|
Transaction1
|
null
|
null
|
null
|
PROPAGATION_NEVER
|
Transaction1
|
Throws
Exception
|
null
|
null
|
PROPAGATION_NESTED(Spring)
|
Transaction1
|
Transaction2
[Transaction1]
|
null
|
Transaction2
|
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
属性执行
事务隔离级别
|
脏读
|
不可重复读
|
幻象读
|
ISOLATION_READ_UNCOMMITTED
|
√
|
√
|
√
|
ISOLATION_READ_COMMITTED
|
|
√
|
√
|
ISOLATION_REPEATABLE_READ
|
|
|
√
|
ISOLATION_SERIALIZABLE
|
|
|
|
ISOLATION_DEFAULT
|
PlatfromTransactionManager
默认的隔离级别
SQLServer :READ_COMMITTED
MySql:REPEATABLE_READ
|
Spring事务的隔离级别
1.
ISOLATION_DEFAULT:
这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
另外四个与JDBC的隔离级别相对应
2.
ISOLATION_READ_UNCOMMITTED:
这是事务最低的隔离级别,它充许令外一个事务可以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。
3.
ISOLATION_READ_COMMITTED:
保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据
4.
ISOLATION_REPEATABLE_READ:
这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
5. ISOLATION_SERIALIZABLE
这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
除了防止脏读,不可重复读外,还避免了幻像读。
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
不可重复读是
指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。
那么,在第一个事务中的两次读数据之间,由于第二个事务的修
改,那么第一个事务两次读到的的数据可能是不一样的。
幻觉读是
指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行
。同时,第二个事务也修改这个表中的
数据,这种修改是向表中插入一行新数据。
那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
分享到:
相关推荐
### Spring 事务传播特性和事务隔离级别详解 #### 一、Spring 事务传播特性 在进行多层服务架构设计时,事务的管理尤其重要。为了确保数据的一致性,Spring 提供了一种灵活的方式来控制事务的传播行为。下面详细...
### Spring事务的传播特性和事务隔离级别 #### 一、Spring事务的传播特性(Propagation) 在Spring框架中,事务管理不仅提供了ACID属性的支持,还引入了事务的传播特性,这些特性决定了当一个方法调用另一个方法时,...
最后,我们提到的是**事务的传播特性**,这是Spring框架中的一种概念,它定义了在一个事务上下文中如何执行另一个方法。例如: - **Not Supported**:不支持事务,如果当前有事务,会挂起事务。 - **Supports**:...
Spring框架提供了多种事务传播特性,用于控制事务在方法调用之间的传播方式。这些传播特性定义了当一个事务方法调用另一个事务方法时的行为: 1. **Propagation_Required**:如果当前存在事务,则继续使用该事务;...
事务传播特性和隔离级别是Java应用程序中事务管理的关键概念。通过合理配置这些特性,可以有效地管理和控制事务行为,确保数据的一致性和完整性。在实际应用中,开发者需要根据具体的需求选择合适的传播行为和隔离...
Spring 框架提供了一套完善的事务管理机制,其中包含了多种事务传播属性和事务隔离级别。这些特性使得在处理数据库操作时,能够更好地控制事务的边界和行为,从而确保数据的一致性和完整性。 首先,我们来看一下...
让我们深入了解一下这两个类以及它们如何处理事务传播特性和隔离级别。 首先,HibernateTemplate是Spring对Hibernate原生Session的一个包装,它提供了一种更安全、方便的方式来执行常见的Hibernate操作。与直接使用...
Spring通过`@Transactional`注解可以方便地设置事务传播行为和隔离级别,例如: ```java @Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED) public void ...
本知识点将深入探讨Spring中的事务管理,主要包括事务的传播特性、隔离级别以及readonly属性。 1. 事务的传播特性: 在Spring中,事务的传播特性定义了在一个事务方法被另一个事务方法调用时,应该如何处理事务...
而Spring_Hibernate_2可能涉及具体事务传播特性的实例代码或者进一步的事务控制策略,如回滚规则和隔离级别设置。 在实际开发中,合理地利用Spring的事务管理和传播特性,能够有效地提高代码的可维护性和系统的稳定...
本资料主要探讨的是Spring支持的数据库事务传播属性和事务隔离级别。 一、事务传播属性 1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果没有事务,则创建一个新的事务。这是最常见的事务定义,适用于...
Java面试题54.Spring事务的传播特性和隔离级别.mp4
事务传播行为定义了当方法被另一个带有事务属性的方法调用时,该方法如何处理事务。Spring 提供了多种不同的传播行为选项,这些选项可以帮助开发者更好地控制事务的创建与参与。 #### 1. `@Transactional...
总之,“spring 事务传播 demo”将展示如何利用Spring的事务传播特性来处理复杂的业务场景,帮助开发者更好地理解和运用这一强大的工具。通过学习和实践这个示例,你将能够掌握在多层方法调用中如何优雅地管理和协调...
java面试宝典
这是PlatformTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。具体取决于使用的数据库类型。 #### 2. ISOLATION_READ_UNCOMMITTED 最低级别的隔离级别,允许一个事务读取另一个事务未提交的数据...
Spring 的事务管理功能非常强大,其中一个重要特性就是事务传播行为。事务传播行为定义了当一个方法调用另一个方法时,如何处理事务边界的问题。Spring 提供了七种不同的传播行为: 1. **`PROPAGATION_REQUIRED`**...
### Spring 事务传播属性详解 #### 一、Spring 事务基础概述 在深入探讨Spring框架中的事务传播属性...此外,需要注意的是,在实际开发中,还应结合事务的隔离级别、读写锁等其他高级特性来进一步优化事务管理策略。