`
沙舟狼客
  • 浏览: 161268 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

事务的5个隔离级别和7个传播行为

阅读更多

隔离级别:

1、ISOLATION_DEFAULT:

默认的隔离级别,使用数据库默认的事务隔离级别 . 另外四个与 JDBC 的隔离级别相对应

2、ISOLATION_READ_UNCOMMITTED:

这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的 数据。这种隔离级别会产生脏读,不 可重复读和幻像读。

3、ISOLATION_READ_COMMITTED:

保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔 离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

4、ISOLATION_REPEATABLE_READ:

这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提 交的数据外,还保证了避免下面的情况产生 ( 不可重复读 ) 。

5、ISOLATION_SERIALIZABLE:

这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻 像读。

事务的传播行为:

 

1、 PROPAGATION_REQUIRED 

如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。

2、PROPAGATION_SUPPORTS

如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。

3、PROPAGATION_MANDATORY

如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。 当单独调用 methodB 时,因为 当前没有一个活动的事务,则会抛出异常 throw new IllegalTransactionStateException("Transaction propagation ''mandatory'' but no existing transaction found"); 当调用 methodA 时, methodB 则加入 到 methodA 的事务中,事务地执行。

4、PROPAGATION_REQUIRES_NEW

总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。

5、PROPAGATION_NOT_SUPPORTED

总是非事务地执行,并挂起任何存在的事务。 当单独调用 methodB 时,不启用任何事务机制,非事务地执行。  

6、PROPAGATION_NEVER

总是非事务地执行,如果存在一个活动事务,则抛出异常 单独调用 methodB ,则非事务的执行。 调用 methodA 则会抛出异常

7、PROPAGATION_NESTED

如果一个活动的事务存在,则运行在一个嵌套的事务中 .如果没有活动事务 , 则按 TransactionDefinition.PROPAGATION_REQUIRED 属性执行 这是一个嵌套事务 , 使用 JDBC 3.0 驱动时 , 仅 仅支持 DataSourceTransactionManager 作为事务管理器。

 

分享到:
评论

相关推荐

    事务传播特性&事务隔离级别

    事务传播特性&事务隔离级别 事务传播特性是指在 Java 中,事务的传播行为,即在多个...事务传播特性和事务隔离级别是 Java 中事务管理的两个重要方面,需要深入了解和正确使用,以确保事务的正确执行和数据的一致性。

    spring事务的传播特性和事务隔离级别

    ### Spring事务的传播特性和事务隔离级别 #### 一、Spring事务的传播特性(Propagation) 在Spring框架中,事务管理不仅提供了ACID属性的支持,还引入了事务的传播特性,这些特性决定了当一个方法调用另一个方法时,...

    spring常用数据库事务传播属性和事务隔离级别1

    Spring 框架提供了一套完善的事务管理机制,其中包含了多种事务传播属性和事务隔离级别。这些特性使得在处理数据库操作时,能够更好地控制事务的边界和行为,从而确保数据的一致性和完整性。 首先,我们来看一下...

    SPRING事务传播特性&事务隔离级别

    ### Spring 事务传播特性和事务隔离级别详解 #### 一、Spring 事务传播特性 在进行多层服务架构设计时,事务的管理尤其重要。为了确保数据的一致性,Spring 提供了一种灵活的方式来控制事务的传播行为。下面详细...

    spring 事务传播与隔离级别DEMO

    在这个DEMO中,我们可以通过编写测试类(TestSpring)来模拟各种情况,观察不同传播行为和隔离级别下,事务的执行效果。这有助于开发者更好地理解这些概念,并在实际项目中选择合适的方式来处理并发问题,确保数据的...

    事务的传播行为和隔离级别.docx

    通过以上介绍,我们可以看到事务的传播行为和隔离级别是事务管理中的两个重要概念。正确理解和应用它们对于保证应用程序的一致性和完整性至关重要。在实际开发过程中,应根据业务需求和系统特性灵活选择合适的传播...

    Spring事务的传播特性和隔离级别

    ### Spring事务的传播特性和隔离级别 #### 一、事务的基本概念 在计算机科学中,事务(transaction)是指一系列操作的集合,这些操作要么全部成功完成,要么全部失败回滚,确保数据的一致性和完整性。事务具备四个...

    Spring控制Hibernate中的事务传播特性与隔离级别操作.docx

    4. **声明式事务管理**:Spring允许在配置文件中声明事务边界,这样可以在多个方法之间定义事务传播行为和隔离级别,而无需在代码中显式处理。 例如,以下是如何使用HibernateTemplate删除Userinfo对象: ```java ...

    spring事物的7大传播机制,5个隔离机制

    这是PlatformTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。具体取决于使用的数据库类型。 #### 2. ISOLATION_READ_UNCOMMITTED 最低级别的隔离级别,允许一个事务读取另一个事务未提交的数据...

    Spring 管理事务(传播特性、隔离级别、readonly).rar

    Spring定义了七种传播行为: - REQUIRED:默认设置,如果当前存在事务,则加入到该事务;如果当前没有事务,则创建一个新的事务。 - SUPPORTS:如果当前存在事务,则加入;如果不存在,则不开启事务。 - ...

    spring事物隔离和传播机制

    - 描述:最严格的事务隔离级别,事务串行执行,保证了事务的原子性和一致性,但效率最低。 - 应用场景:当数据完整性比性能更重要时使用。 2. **`ISOLATION_REPEATABLE_READ`**: - 描述:保证了事务不会修改...

    事务传播特性了解事务的几种传播特性

    事务隔离级别是指在并发环境中,如何保证事务的隔离程度。主要分为以下几种: 1. **ISOLATION_DEFAULT**:使用数据库的默认隔离级别。 2. **ISOLATION_READ_UNCOMMITTED**:最低的隔离级别,允许其他事务看到未...

    Spring的7 种事务传播行为.pdf

    Spring框架的7种事务传播行为是事务管理的关键概念,它们定义了在多个方法相互调用时,事务应该如何在这些方法间传播。...理解并正确使用Spring的事务传播行为和事务隔离级别是开发高可用、高性能的应用程序的关键。

    Spring事务传播机制.docx

    事务隔离级别的选择和事务传播行为的设定,对于确保数据一致性至关重要。例如,如果你的应用需要绝对的数据一致性,可能会选择较高的隔离级别如SERIALIZABLE,但这也可能牺牲了系统的并发性能。反之,如果你更关心...

    Spring的7 种事务传播行为.docx

    理解并正确使用Spring的事务传播行为和事务隔离级别,以及深入理解ACID特性,对于构建健壮的、能够处理并发问题的业务系统至关重要。开发者需要根据具体业务场景选择合适的事务管理策略,确保系统的稳定性和数据的...

    spring 事务传播 demo

    在实际应用中,我们还应考虑事务的隔离级别、事务超时和回滚规则等参数,以确保数据的一致性和并发性能。Spring提供了灵活的配置选项,可以根据具体需求进行调整。 总之,“spring 事务传播 demo”将展示如何利用...

    spring的隔离级别

    5. **事务隔离级别的选择** 隔离级别越高,防止并发问题的能力越强,但同时也可能降低了系统的并发性能。因此,选择合适的隔离级别需要根据应用的具体需求来平衡并发性和一致性。 6. **事务其他属性** 除了隔离...

    Spring声明式事务配置管理方法

    Spring提供了七种事务传播行为: - `PROPAGATION_REQUIRED`:如果存在事务,则加入;否则新建。 - `PROPAGATION_REQUIRES_NEW`:始终新建事务,如果已有事务则挂起。 - `PROPAGATION_SUPPORTS`:如果存在事务,...

Global site tag (gtag.js) - Google Analytics