zoukankan      html  css  js  c++  java
  • JDBC事务处理

    • 什么是事务

           一个事务是由一条或几条数据库操作的SQL语句所组成的一个不可分割的工作单元。事务必须服从ACID原则,即原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。

          通俗理解,事务就是一组原子操作单元,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。即,要么全部执行成功,要么撤销不执行

    • 结束事务的操作

           1. commit()方法,表示完成对事务的提交

           2. rollback()方法,表示完成事务回滚,多用于在处理事务过程中出现了异常的情况。

           一般而言,事务默认操作是自动提交,即操作成功后,系统将自动调用commit()方法,否则将调用rollback()方法

    • 5种事务隔离级别

           1. TRANSACTION_NONE JDB。不支持事务。

           2. TRANSACTION_READ_UNCOMMIT。未提交读。说明在提交前一个事务可以看到另一个事务的变化。允许“脏”读、不可重复读和虚读。

           3. TRANSACTION_READ_COMMIT。已提交读。说明读取未提交的数据是不允许的。允许不可重复读和虚读。

           4. TRANSACTION_REPEATABLE_READ。可重复读。说明事务保证能够再次读取相同的数据而不会失败,但仍允许虚读。

           5. TRANSACTION_SERIALIZABLE。可序列化。是最高的事务级别。能防止“脏”读,不可重复读和虚读。

    • “脏”读: 一个事务读取了另一个事务尚未提交的数据
    • 不可重复读:一个事务的操作导致另一个事务前后读取到不同的数据
    • 虚读:一个事务导致另一个事务前后两次查询的结果数据量不同。(例如,当事务A与事务B并发执行时,当事务B查询读取数据后,事务A新增或删除了一条满足事务A的查询条件记录,此时,事务B再次查询,发现查询到当次不存在的记录,或者前次的某个记录不见了。)

         事务隔离级别越高,为避免冲突所花的精力也就越多。可以通过Connection对象的conn.setTransactionLevel()方法来设置隔离级别,通过conn.getTransactionIsolation()方法来确定当前事务的级别。

  • 相关阅读:
    技术晨读_2015_11_29
    mysql的timeout
    Gradle目录解析
    flexbox简介
    elasticsearch 查询(match和term)
    内存那些事
    elasticsearch 文档
    elasticsearch 集群
    elasticsearch中的API
    小菜的程序员道路(三)
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6605568.html
Copyright © 2011-2022 走看看