`

jdbc事务处理

阅读更多

事务:由一个或多个执行、完成的语句组成,以组的形式提交或回滚。当前事务结束,另一个事务开始。

在JDBC中,事务默认是自动提交的,即每执行一条语句,就是一个事务。

事务特性:ACID特征,Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)和Durability(持久性)。

  • 原子性:指整个事务是不可以分割的工作单元。只有事务中所有的操作执行成,才算整个事务成功;事务中任何一个SQL语句执行失败,那么已经执行成功的SQL语句也必须撤销,数据库状态应该回到执行事务前的状态。
  • 一致性:指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。例如对于银行转账事务,不管事务成功还是失败,应该保证事务结束后两个转账账户的存款总额是与转账前一致的。
  • 隔离性:指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
  • 持久性:指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

事务各个特征的实现手段:

  • 原子性:日志
  • 一致性:日志
  • 隔离性:锁机制
  • 持久性:日志

事务隔离级别(5级):

  • 0:TRANSCATION_NONE
  • 1:TRANSCATION_READ_UNCOMMITTED
  • 2:TRANSCATION_READ_COMMITTED                 防止脏读
  • 4:TRANSCATION_REPEATABLE_READ             防止不可重复读
  • 8:TRANSCATION_SERIALIZABLE                    防止幻影读

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事务处理机制探秘

    总结起来,JDBC事务适用于简单的单库操作,而JTA事务则适合处理跨多个数据源的复杂事务场景。在J2EE环境中,容器管理的事务(如SessionBean中的JTA事务)能够提供更高的可伸缩性和可靠性。在实际应用中,根据需求...

    JavaBean中使用JDBC方式进行事务处理

    ### JavaBean中使用JDBC方式进行事务处理 #### 一、引言 在现代软件开发过程中,数据一致性是非常关键的一个方面,特别是在涉及到多个数据库操作时。本文将详细介绍如何在JavaBean中利用JDBC(Java Database ...

    JDBC事务处理、提交、回滚。.docx

    1. **JDBC事务的基本概念** - **事务**:事务是数据库系统中执行的一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)...

    JDBC事务操作例子所需jar包

    在Java中,JDBC事务处理主要涉及以下几个关键概念: 1. **Connection对象**:它是与数据库的会话,通过该对象可以开启、提交和回滚事务。在连接池中获取到的Connection通常已经自动开启了事务,但如果没有,可以...

    Sharding-JDBC分布式事务应用

    Sharding-JDBC是阿里巴巴开源的一款轻量级数据库中间件,它为Java开发者提供了一种透明化的数据分片解决方案,同时也支持分布式事务处理。在现代互联网应用中,面对海量数据和高并发的挑战,分布式事务成为了必不可...

    Java jdbc三层及事务(转账案例)

    本教程将深入探讨Java JDBC中的三层架构(三层架构是指表现层、业务逻辑层和数据访问层)以及事务处理,同时结合具体的转账案例来阐述可能遇到的问题和解决策略。此外,我们还会涉及单例模式和ThreadLocal在实际应用...

    Java(JDBC)事务处理

    Java(JDBC)事务处理

    jdbc连接各数据库及事务处理

    二、JDBC事务处理 在数据库操作中,事务处理确保一组操作要么全部成功,要么全部失败,保证数据的一致性。在JDBC中,我们可以通过以下方式管理事务: 1. 设置自动提交为false:默认情况下,JDBC的每个数据库操作都...

    JDBC事务管理的简单实现

    事务模板是指提供模板方法对事务处理的代码进行控制。事务模板可以简化事务管理的代码,提供了统一的事务管理方法。例如,TransactionTemplate类提供了executeTransaction()方法,用于执行事务回调方法。 五、事务...

    JDBC的事务初探

    **JDBC事务初探** Java Database Connectivity (JDBC) 是Java平台中用于访问数据库的标准API。在处理数据库操作时,事务管理是确保数据一致性、完整性和持久性的重要机制。本篇将深入探讨JDBC中的事务处理,以及...

    JDBC事务管理.docx

    JDBC事务管理是数据库...总之,JDBC事务管理是确保数据库操作正确性和一致性的关键,通过理解和应用ACID原则以及适当的并发控制机制,开发人员可以有效地处理并发环境下的事务处理,保证系统的稳定性和数据的完整性。

    JDBC事务 JTA事务 传播特性 隔离级别

    在2PC中,事务处理监视器(TPM)先询问所有资源管理器(如数据库)是否准备好提交,然后再决定全局提交或回滚。JTA事务更复杂,但能保证分布式事务的一致性。 最后,我们提到的是**事务的传播特性**,这是Spring...

    事务处理与异常处理全面的讲解

    例如,一个典型的JDBC事务处理代码如下: ```java Connection con = DriverManager.getConnection(); con.setAutoCommit(false); try { // 事务中的操作 con.commit(); } catch (Exception e) { con.rollback(); ...

    spring JDBC事务管理

    **源码分析**:深入理解Spring JDBC事务管理的源码,可以帮助开发者更好地定制和优化事务处理。关键类如`TransactionDefinition`定义了事务属性,如隔离级别、超时时间等;`TransactionStatus`接口则表示当前事务的...

    Spring Data JPA系列4——Spring声明式事务处理与多数据源支持.doc

    JDBC 事务处理是通过 Connection 对象来控制事务的提交和回滚。例如,在 JDBC 中,可以使用 Connection 对象的 setAutoCommit 方法来禁用自动事务提交,然后使用 commit 方法来提交事务,或者使用 rollback 方法来回...

    JDBC事物应用源码文件

    通过`jdbc_demo`这样的源码文件,开发者可以学习到如何在实际项目中使用这些概念,从而更好地理解和掌握JDBC事务处理。实践中,开发者可以参考这些示例代码,结合具体的业务需求,编写自己的事务管理逻辑。

    JDBC事务控制--讲述如何控制JDBC事务

    ### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...

    JDBC事务管理项目

    这不利于事务处理,因为无法控制何时提交或回滚事务。 2. **手动提交模式**:通过调用`Connection`对象的`setAutoCommit(false)`方法,可以关闭自动提交,从而开始手动事务管理。在手动模式下,需要显式调用`commit...

    JDBC教程

    JDBC事务处理 JDBC支持事务管理,可以控制一组数据库操作作为一个原子单元。通过设置Connection的自动提交属性(`conn.setAutoCommit(false)`)来开启手动事务,并使用`commit()`和`rollback()`方法提交或回滚事务...

Global site tag (gtag.js) - Google Analytics