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(); // 回滚事务

  }

posted on 2019-07-08 11:52  朽木zidiao  阅读(103)  评论(0编辑  收藏  举报

导航