事务:由一个或多个执行、完成的语句组成,以组的形式提交或回滚。当前事务结束,另一个事务开始。
在JDBC中,事务默认是自动提交的,即每执行一条语句,就是一个事务。
事务特性:ACID特征,Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)。
- 原子性:指整个事务是不可以分割的工作单元。只有事务中所有的操作执行成,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该回到执行事务前的状态。
- 一致性:指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对于银行转账事务,不管事务成功还是失败,应该保证事务结束后两个转账账户的存款总额是与转账前一致的。
- 隔离性:指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
- 持久性:指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
事务各个特征的实现手段:
- 原子性:日志
- 一致性:日志
- 隔离性:锁机制
- 持久性:日志
事务隔离级别(5级):
Oracle支持2种:2和8,默认为2.
并发环境中的几种情况:
- 脏读:一个事务在提交前可以看到另一个事务的行为,则出现脏读。一个事务读到了其它事务没有提交的数据;
- 不可重复读:一个事务通过SQL读取数据后,有其它事务立刻作了DML操作,并且提交了,然后第一个事务通过相同的SQL语句再次读取,所得的数据和第一次读取的数据不一致的情况。
要点:同一个事务,同一语句,在多次读取过程中,所得到的结果不一致的情况。
如何防止:在执行SELECT语句时加上for update子句
- 幻(影)读:基本理解同不可重复读。
区别:
不可重复读:指某些列的值的不同,
幻影读:指表的总记录数量上的不同。
如何防止:锁表,代价很高。
使用如下方法控制连接的独立性等级:
conn.setTransactionIsolation(Connection.TRANSACTION_XXX);
事务的开始与结束:
首先,因为默认的JDBC事务是自动提交的,故我们在获取数据库连接后,应该将连接改为非自动提交模式:
conn.setAutoCommit(false); //标志着新事务的开始
conn.commit(); //提交
conn.rollback(); //回滚
在JDBC 3.0新增功能中,提供对事务commit和rollback的更好支持,在事务过程中,在两个操作间可以插入一个命名的存储点作为标记,因此可以将事务回滚到那个标记,保留标记有效前的所有操作。
示例:
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
stmt.executeUpdate(update1);
Savepoint point1 = conn.setSavepoint("point1");
stmt.executeUpdate(update2);
stmt.executeUpdate(update3);
conn.rollback(point1);
conn.commit();
相关推荐
**JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...
JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...
在Java中,JDBC事务处理主要涉及以下几个关键概念: 1. **Connection对象**:它是与数据库的会话,通过该对象可以开启、提交和回滚事务。在连接池中获取到的Connection通常已经自动开启了事务,但如果没有,可以...
"JDBC事务管理的简单实现" 在JDBC编程中,事务管理是非常重要的一部分。为了实现数据一致性,需要在代码中显示的调用Connection方法的事务相关API来完成工作。下面是关于JDBC事务管理的简单实现的知识点。 一、...
### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...
标题中的“Spring JDBC事务管理”是指在Spring框架中如何利用JDBC进行数据库操作时的事务控制。Spring提供了多种方式来管理事务,使得开发者能够在复杂的业务逻辑中更好地控制数据的持久化过程,确保数据的一致性和...
JDBC事务和JTA(XA)事务 JDBC事务和JTA(XA)事务是两种常见的数据库事务类型,它们都可以用来管理数据库事务,确保数据库的一致性和可靠性。 JDBC事务 JDBC事务是Java Database Connectivity(JDBC)的事务机制,它...
总结起来,JDBC事务适用于简单的单库操作,而JTA事务则适合处理跨多个数据源的复杂事务场景。在J2EE环境中,容器管理的事务(如SessionBean中的JTA事务)能够提供更高的可伸缩性和可靠性。在实际应用中,根据需求...
本项目“JDBC事务管理项目”旨在教你如何在Java应用中使用JDBC来处理数据库事务,确保数据的一致性和完整性。 **事务的概念** 事务是数据库操作的基本单元,它包含了对数据库的一系列操作,这些操作要么全部成功,...
**JDBC事务初探** Java Database Connectivity (JDBC) 是Java平台中用于访问数据库的标准API。在处理数据库操作时,事务管理是确保数据一致性、完整性和持久性的重要机制。本篇将深入探讨JDBC中的事务处理,以及...
### JDBC事务管理与分页策略详解 在Java开发中,JDBC(Java Database Connectivity)作为连接数据库的标准API,被广泛应用于数据操作。本文将深入探讨JDBC中的事务处理机制及其在实际应用中的示例,同时对比分析两...
Spring JDBC事务管理 Spring框架提供了两种事务管理方式:编程式的事务管理(Programmatic transaction management)和声明式的事务管理(Declarative transaction management)。在本文中,我们将以JDBC事务管理...
这篇12页的PDF文档,"JDBC事务管理及SavePoint示例Java开发Java经验技巧",很可能是详细讲解了这两个主题,并提供了一些实际的编程示例。 首先,让我们来深入理解JDBC事务管理。在Java中,JDBC提供了四种事务隔离...
Oracle JDBC事务的优化是数据库管理中的重要环节,其目的是提高数据库系统的性能和效率。Oracle数据库作为广泛使用的关系型数据库系统,其性能优化涉及到多个层面,包括共享内存管理、数据库段的优化、数据组织方式...
首先,让我们了解JDBC事务管理。在JDBC中,事务的开始、提交和回滚可以通过Connection对象来控制。`setAutoCommit(false)`会禁用自动提交,这时就需要手动调用`commit()`或`rollback()`来决定事务的最终状态。例如:...
首先,我们需要理解JDBC事务的基本概念。JDBC支持四种事务隔离级别,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。每种级别都有不同的...
非常常用的JavaEE四层架构下的纯JDBC事务控制简单解决方案。Eclipse工程。详情参看:http://blog.csdn.net/qjyong/archive/2010/04/08/5464835.aspx
1. **JDBC事务的基本概念** - **事务**:事务是数据库系统中执行的一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)...
本项目为一个简单的JDBC项目,包括:MySQL数据库在idea中的增删改查,JDBC简化,JDBC工具类封装,orm模式,数据库三层架构,JDBC事务 新建一个ProductManager的项目,实现利用ORM思想和三层架构以下功能: t_product...