zoukankan      html  css  js  c++  java
  • JDBC数据库开发进阶之事务处理

    一.什么是事务

      银行转账,张三转10000块到李四的账户,其实需要两条sql语句

    ·给张三的账户减去10000元

    ·给李四的账户增加10000元

    二.事务的四大特性(ACID)面试!

    事务的四大特性:

    ·原子性(Atomicity):事务中所有操作是不可再分割的原子单位。事务中所有操作要么执行成功,要么执行失败。

    ·一致性(Consistency):事务的状态和其他业务规则保持一致,如转账业务,不管成功或失败,参与两个账户转账之和是不会发生改变的。

    ·隔离性(Isolation):隔离性是指在并发操作中,不同事务之间应该隔离开来,每个并发中的事务不会互相干扰。

    ·持久层(Durability):一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交数据后,数据库马上崩溃,在数据库重启时,也必须保证通过某种机制恢复数据。

    三.MYSQL中操作事务

      默认情况下,MySQL每执行一条SQL语句,都是一个单独的事务。如果需要在一个事务中包含多条SQL语句,那么需要开启事务和结束事务。

      ·开启事务:start transaction

      `结束事务:commit 或 rollback

      在执行SQL语句之前,先执行start transation ,这就开启了一个事务(事务的起点),然后可以执行多条sql语句,最后要结束事务,commit表示提交,即事务中的多条SQL语句所做出的影响会持久到数据库中,或者rollback 代表回滚,即回滚到事务的起点,之前做的所有操作都取消了!

    四.JDBC事务

    在jdbc中处理事务都是通过Connection完成的

    同一事务中的所有操作,都在使用同一个conncetion对象!

    1.JDBC中的事务

      Connection有三个方法与事务相关:

      ·setAutoCommit(boolean) :设置是否为自动提交事务,如果为true(默认值就是true)表示自动提交,也就是每条执行的SQL语句都是一个单独的事务,如果设置false,那么就相当于开启了事务,con.setAutoCommit(false) ; --表示开启事务;

      ·commit():表示结束事务, con.commit(); -- 表示提交事务;

      ·rollback():回滚结束事务,con.rollback(); -- 表示回滚事务

      jdbc处理事务的代码格式:

      try {

        con.setAutoCommit(false); // 开启事务

        ......

        ......

        con.commit(); // 提交结束事务  

      }catch() {

        con.rollback(); // 回滚事务

      }

  • 相关阅读:
    vue promise
    vue 数组操作
    vue登录注册切换的坑
    筆記連接
    vue配置jquery和bootstarp
    css的寬高約束
    css框模型
    css居中flex
    css居中
    遍历forEach与map的区别-forEach踩坑记
  • 原文地址:https://www.cnblogs.com/Tony98/p/11150278.html
Copyright © 2011-2022 走看看