JDBC事务管理

Posted Langkye

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC事务管理相关的知识,希望对你有一定的参考价值。

为了防止某些具有连带性的业务发生异常,导致数据库数据产生非正常的变化,需要对这些业务进行事务管理。这些被事务进行管理的一系列与数据库相关的操作,要么同时成功,要么同时失败。在进行如银行转账的关联操作的业务上,解决了不必要的麻烦。

Java中通过数据库连接对象来进行事务管理

这里以 mysql 例,在java中, mysql 默认开启事务自动提交,即没执行完一条完整的 mysql 语句,就会被提交,相当于每一条 mysql 语句被单独的事务进行管理。我们需要对多条 mysql 进行管理,所以,首先我们需要进行以下操作:

  1. 关闭默认的事务自动提交,即 开启事务管理,手动提交事务。

  2. 手动提交事务,当所有sql被正常执行完后,进行事务提交

  3. 事务回滚,当被事务管理的某条sql发生异常,则所有被事务管理的记录将会恢复到进入事务管理之前的状态。


基本语法示例:

...
try {
    /* 1.开启事务管理:关闭事务自动提交(通过数据库连接对象) */
    conn.setAutoCommit(false);

    // 预处理SQL
    ps = conn.prepareStatement(sql);
    // 设置SQL参数
    ps.setString(n, parameter);
    // 执行SQL语句
    ps.execute();

    /* 提交事务 */
    2.conn.commit();
} catch (SQLException throwables) {

    /* 事务回滚 */
    try {
        if (conn!=null){
            conn.rollback();
        }
    } catch (Exception throwables) {
        throwables.printStackTrace();
    }
    throwables.printStackTrace();
} finally {
    // 释放资源
    DB.close(rs,ps,conn);
}
...

以上是关于JDBC事务管理的主要内容,如果未能解决你的问题,请参考以下文章

面试常用的代码片段

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

使用 Git 来管理 Xcode 中的代码片段

massCode 一款优秀的开源代码片段管理器

如何管理在每个 git 版本中添加私有代码片段?

JDBC操作数据库之查询数据