zoukankan      html  css  js  c++  java
  • 事物


    1.事物概念

      在某些业务中要求连续的两个或多个操作执行要么同时成功要么同时失败.


    2.事物的特点

      原子性  隔离性   一致性   持久性


    3.事物特性

      原子性    事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

      一致性    事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。

      隔离性    一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

      持续性      也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。


    4.JDBC事物处理

      Connection对象默认为「自动提交」的事务模式(autocommit)。 可以操作Connection的setAutoCommit(false)方法改变自动提交的为手动提交。 在下达一连串的SQL语句后,自行调用Connection的commit()来完成变更。 如果执行失败用 rollback()来撤消操作。

      示例:

    try {
        …
        conn.setAutoCommit(false); //设定autocommit为false
        stmt = conn.createStatement();
        stmt.execute("...."); // SQL
        stmt.execute("....");
        stmt.execute("....");
        conn.commit(); //正确无误,确定提交
     }catch(SQLException e) { //在commit()前发生错误
        try {
             conn.rollback(); //撤消操作
        } catch (SQLException e1) {
             e1.printStackTrace();
        }
        e.printStackTrace();
     }
    

      设定储存点(savepoint)

    conn.setAutoCommit(false);
    Statement stmt = conn.createStatement();
    stmt.executeUpdate("....");
    stmt.executeUpdate("....");
    Savepoint savepoint = conn.setSavepoint(); //设定savepoint
    stmt.executeUpdate("....");
    //如果因故rollback
    conn.rollback(savepoint);
    . . .
    conn.commit();
    //记得释放savepoint
    conn.releaseSavepoint(savepoint);
    

      

  • 相关阅读:
    gitlab配置ssh连接
    java 函数编程之Consumer接口的使用
    一枚程序猿的MacBook M1详细体验报告
    【线上问题排查技巧】动态修改LOGGER日志级别
    【线上排查实战】AOP切面执行顺序你真的了解吗
    阿里巴巴Canal常见问题:重复解析/Filter失效/消费落后
    使用Binlog日志恢复误删的MySQL数据实战
    Git实战技巧:恢复被强制push -f失踪的代码
    一次完整的JVM堆外内存泄漏故障排查记录
    Java线上问题排查神器Arthas快速上手与原理浅谈
  • 原文地址:https://www.cnblogs.com/xiaonanman/p/6759190.html
Copyright © 2011-2022 走看看