`
sunbin
  • 浏览: 353103 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jdbc事务处理

    博客分类:
  • jdbc
阅读更多

 

 

1:事务的特征:ACID

   atomic :原子性:一个事务是一个不可分割的单位

   consitency  一致性:事务开始结束之后,数据库完整性约束没有被破坏

约束:PK FK not null check unique

isolaction 隔离性:一个事务的执行,不被其它事务干扰

durable 持久性:数据应该持久保存

 

2事务的边界Autocommit

Autocommit :事务的自动的提交:

   JDBC默认是自动提交事务,Autocommit=true

   默认情况下事务的边界:

   对于insert update delete 是在statement执行完

   对于select resultSet 关闭

autocommit 手动提交Autocommit=false

 只能手动设置事务的边界,也就是手动提交事务

conn.commit();

   Autocommit=false,如果不手动提交事务,那么connection 在显示关闭的时候提交了事务

   如果没有显示关闭的connection,事务是不会提交,

   connection autoCommit 不要默认true的情况,

   设置为falsecatch异常一定要要rollback

 

3:事务的隔离级别

   问题:

     脏读:允许读取到别的事务未提交的数据

     不可重复读:同一事务在2此读取一条数据,读取后结果不一致

     幻象读:在一个事务中读取别的事务插入进来的数据

  

oracle 默认支持read Comitted serializable    

    

transaction read uncomitted

     可以读取到别的事务未提交的数据

 transaction  comitted

     只能读取到别的事务已经提交数据

 transaction repeatable read

      在一个事务中多次读取同一条记录结果是重复的

 transaction  serializable 

       在一个事务中,读取数据,如果别的事务插入的数据,

  每此读取到相同的结果

 

jdbc 3.0规范中(请自行到www.jcp.org查阅)提到jdbc支持五中事务隔离级别

原文

1. TRANSACTION_NONE — indicates that the driver does not support transactions,which means that it is not a JDBC compliant driver.
    2. TRANSACTION_READ_UNCOMMITTED — allows transactions to see uncommittedchanges to the data. This means that dirty reads, nonrepeatable reads, and phantom reads are possible.
    3. TRANSACTION_READ_COMMITTED — means that any changes made inside atransaction are not visible outside the transaction until the transaction iscommitted. This prevents dirty reads, but nonrepeatable reads and phantom reads are still possible.
    4. TRANSACTION_REPEATABLE_READ — disallows dirty reads and nonrepeatablereads. Phantom read are still possible.

5. TRANSACTION_SERIALIZABLE — specifies that dirty reads, nonrepeatable reads,and phantom reads are prevented.

 

 

 

 

 

问题

隔离级别

脏读

不可重复读

幻读

未提交读

Y

Y

Y

提交读

N

Y

Y

可重复读

N

N

Y

序列化读

N

N

N

 

4SavePoint

Savepoint :给事务提供了更细粒度的控制

            通过metadata 可以取到dirver是否支持metadata

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    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