什么是事务?
从四个关键概念谈起:
原子性 – 所有操作要么都成功,要么都失败
一致性 – 事务不能违反完整性约束(比如虽然事务还未提交,但仍需遵守各种约束规则,这些规则是在事务提交之前而非在事务提交以后才生效!)
隔离性 – 一个事务的效果,不影响正在同时执行的其它事务,那么,不影响的程度如何呢?这个由隔离级别来定义,标准的隔离级别有下列四种:
未提交读(read uncommitted)
提交读(read committed)
重复读(repeatable read)
序列化(serializable)
通过一些现象可看出隔离级别的效果:
脏读 – (dirty read) 当一个事务读取另一个事务尚未提交的修改时,产生脏读。
不可重复读 – (nonrepeatable read) 同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。
幻读 – (phantom read) 同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。
Dirty Read NonRepeatable Read Phantom Read
Read uncommitted Possible Possible Possible
Read committed Not possible Possible Possible
Repeatable read Not possible Not possible Possible
Serializable Not possible Not possible Not possible
持久性 – 一旦事务成功完成,则数据必需保证已经正确的持久化(保存)!
JDBC事务与JTA事务
JDBC事务只能支持一个数据库(单数据源),而JTA可以支持分布式的事务(多数据源)。
JDBC事务,一般由数据库本身来执行提交或回滚操作(单阶段提交)。所有数据库都有它自己的事务管理器,这些管理器只能处理其自身的事务(称为本地事务)。
而JTA则不同,JTA要支持多个数据源,站在更高的角度上,提供一个“事务处理监视器(TPM)”来管理和协调这些数据源之间的事务操作。它必需执行两阶段提交(2PC)协议。
准备阶段 – TPM向所有RM(资源管理器,即数据库)确认状态,是否可以提交或回滚
提交阶段 – TPM确认提交之后,向所有RM发出提交指令(或回滚)
TPM本身会维护事务日志,以保证持久性(灾难恢复等)
传播特性
Not Supported – 不支持,如果当前有事务上下文,将挂起当前的事务
Supports - 支持,如果有事务,将使用事务,如果没有事务,将不使用事务
Required - 需要,如果当前有事务上下文,将使用当前的上下文事务,如果没有,将创建新的事务
Required New - 需要新的事务,如果当前有事务上下文,将挂起当前的事务,并创建新的事务去执行任务,执行完成之后,再恢复原来的事务
Mandatory - 当前必须要有事务上下文,如果当前没有事务,将抛出异常
Never - 当前必须不能有事务上下文,如果有事务,将抛出异常
分享到:
相关推荐
事务传播特性和隔离级别是Java应用程序中事务管理的关键概念。通过合理配置这些特性,可以有效地管理和控制事务行为,确保数据的一致性和完整性。在实际应用中,开发者需要根据具体的需求选择合适的传播行为和隔离...
### Spring 事务传播属性详解 #### 一、Spring 事务基础概述 在深入探讨Spring框架中的事务传播属性...此外,需要注意的是,在实际开发中,还应结合事务的隔离级别、读写锁等其他高级特性来进一步优化事务管理策略。
它提供了丰富的功能,包括事务处理,这是确保服务操作原子性、一致性、隔离性和持久性的关键机制。让我们深入探讨一下“WCF按部就班学习系列7:WCF事务概述”中的核心知识点。 1. **WCF事务属性**:在WCF服务中,...
TransactionDefinition接口定义了事务的规则,包括事务的名称、隔离级别、传播行为和超时时间,以及是否为只读事务。这些属性对事务的行为有直接影响: - `getName()`:返回事务的唯一标识。 - `...
### Spring框架中的事务管理 #### 一、Spring框架概述 Spring 框架是一个轻量级的开源 Java 框架,旨在简化企业级应用的开发...通过对事务传播机制和隔离级别的深入了解,可以更好地设计和实现高可用性的企业级应用。
注解的属性包括`propagation`(传播行为)、`isolation`(隔离级别)、`timeout`(超时时间)、`rollbackFor`(指定异常类型触发回滚)和`noRollbackFor`(指定异常类型不触发回滚)。 #### 2.2 事务传播行为 - ...
同时,合理设置事务的传播行为和隔离级别,可以避免潜在的并发问题。 以上就是Spring 声明式事务管理的基本知识点,它在处理复杂的业务逻辑和数据一致性方面发挥着至关重要的作用。通过有效的事务管理,开发者可以...
- **基于注解的配置**:在业务方法上使用`@Transactional`注解来声明事务属性,如事务的传播行为、隔离级别、超时限制等。 ### 4. `@Transactional`注解详解 - ** propagation**:事务的传播行为,如`REQUIRED`...
3. DefaultTransactionDefinition:定义事务属性,包括传播行为、隔离级别、超时时间等。 4. TransactionStatus:表示事务的状态,包括是否已回滚、是否可回滚等。 八、实战应用 在实际开发中,通过配置Spring事务...
对于事务管理的核心逻辑,如事务传播行为和隔离级别,可以在XML配置中统一定义,而对于具体业务方法的事务控制,可以使用注解进行精细化管理。 总结来说,Spring的声明式事务管理是其强大的企业级功能之一,它通过...
此外,还可以通过@Transactional注解的属性对事务进行更细致的控制,例如设置传播行为、隔离级别等。 ##### 3. 事务的传播行为 - **PROPAGATION_REQUIRED**:这是默认的行为,如果当前存在事务,则加入该事务;...
- **`TransactionDefinition`**:定义了事务的隔离级别、传播行为、只读标志等属性。 - **`TransactionStatus`**:表示当前事务的状态,提供了提交、回滚等操作的方法。 - **`PlatformTransactionManager`**:是...
- **目标**:实现ACID特性(原子性、一致性、隔离性、持久性),确保数据的一致性和完整性。 #### 二、常见的分布式事务解决方案 1. **TCC型分布式事务方案**: - **定义**:TCC(Try-Confirm-Cancel)是一种...
1. **事务定义**:`DefaultTransactionDefinition`用于设置事务的一些属性,如隔离级别、传播行为等。 2. **事务状态**:`TransactionStatus`对象表示当前事务的状态。 3. **事务管理器**:`...
1. TransactionDefinition:定义了事务的属性,如隔离级别、传播行为、超时限制和是否只读。 2. PlatformTransactionManager:事务管理器接口,提供了开始、提交、回滚事务等操作,具体实现取决于底层的数据源。 3...
GTS支持ACID(原子性、一致性、隔离性、持久性)特性,为企业级应用提供了高可用和高性能的分布式事务解决方案。 2. **产品架构** GTS的架构通常包括事务协调器、资源管理器和事务参与者三个主要部分。事务协调器...
它支持ACID(原子性、一致性、隔离性、持久性)特性,确保在分布式环境下的业务操作一致性。GTS适用于大规模分布式系统,如电商平台、金融交易系统等,需要处理复杂的事务场景。 2. **产品架构**: GTS采用两阶段...