zoukankan      html  css  js  c++  java
  • JDBC 之 事务

    1.概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。

    2.数据库开启事务的命令dtl:

    Start transaction开启事务

    Rollback回滚事务(撤销)

    Commit提交事务

    3.JDBC控制事务语句:

    Connection.setAutoCommit(false);   ------start transaction

    Connecttion.rollback();         ------roolback

    Connection.commit();           ------commit

    4.事务的特性(ACID)

    (1)原子性(Atomicity)

    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

    (2)一致性(Consistency)

    事务必须使数据库从一个一致性状态变换到另外一个一致性状态

    (3)隔离性(Isolation)

    事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,即多个并发事务之间要相互隔离。

    (4)持久性(Durability)

    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

    5.事务的隔离级别

    多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。

    如果不考虑隔离性,可能会引发如下问题:

    (1)脏读:指一个事务读取了另外一个事务未提交的数据。

    (2)不可重复读:针对一条记录的,同一条记录前后不一样

    (3)虚读:幻读,同一张表前后不一样记录数

    6.数据库共定义了四种隔离级别:

    (1)Serializable:可避免脏读、不可重复读、虚读情况的发生。(串行化)

    (2)Repeatable read:可避免脏读、不可重复读情况的发生。

    (3)Read committed:可避免脏读情况发生。

    (4)Read uncommitted:最低级别,以上情况均无法保证。(读未提交)

    set   transaction isolation level设置事务隔离级别

    select @@tx_isolation查询当前事务隔离级别

    7.注意:

    (1)先设置隔离级别,再开启事务。

    Conn.setTransactionIsolation(Connection.*);

    Conn.setAutoCommit(false);

    (2)Connection中的setTransactionIsolation(int level)用于设置隔离级别

    Level:Connection中的常量

    8.案例:在JDBC代码中使如下转帐操作在同一事务中执行。



  • 相关阅读:
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Maximum Depth of Binary Tree
    Sharepoint 2013 创建TimeJob 自动发送邮件
    IE8 不能够在Sharepoint平台上在线打开Office文档解决方案
    TFS安装与管理
    局域网通过IP查看对方计算机名,通过计算机名查看对方IP以及查看在线所有电脑IP
    JS 隐藏Sharepoint中List Item View页面的某一个字段
    SharePoint Calculated Column Formulas & Functions
    JS 两个一组数组转二维数组
  • 原文地址:https://www.cnblogs.com/bigerf/p/6265840.html
Copyright © 2011-2022 走看看