专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 JDBC事务管理示例

JDBC事务管理示例

更新时间:2022-04-22 09:58:49 来源:赢咖4 浏览1710次

在本教程中,赢咖4小编将告诉大家JDBC中的事务管理。一个事务代表一组操作,用于执行一项任务。

事务是一组命令,它将我们的数据库从一个一致状态带到另一个一致状态。

JDBC 中的事务管理:

以下是关于 JDBC 中的事务管理的最重要的几点。

事务意味着,它是一组用于执行任务的操作。

事务可以达到成功状态或失败状态。

如果所有操作都成功完成,则事务成功。

如果任何一个操作失败,那么所有剩余的操作都将被取消,最终事务将进入失败状态。

交易类型:

基本交易有两种类型。

本地交易

全局/分布式事务

本地交易:

如果所有操作都在一个/同一个数据库上执行,则称为本地事务。

全球/分布式事务:

如果操作在多个数据库上执行,则称为全局事务。

示例: 如果我们将钱从account1转移到同一家银行的account2,则称为本地交易。如果我们将钱从account1转移到不同银行的account2,则称为全局或分布式交易。

JDBC 只能支持本地事务。对于分布式事务,我们必须使用 EJB 技术或 Spring Framework。

JDBC 示例中的事务管理:

大家对JDBC常用接口也有所了解,我们可以从 Connection 接口获得 JDBC 中的 Transaction 支持。Connection 接口提供了 3 种在 JDBC 中执行事务管理的方法。

设置自动提交()

犯罪()

回滚()

事务 setAutoCommit() :

在开始操作之前,首先我们需要禁用自动提交模式。这可以通过调用 setAutoCommit(false) 来完成。

默认情况下,从 java 程序完成的所有操作都将在数据库中永久执行。一旦永久执行在数据库中发生,我们就无法恢复它们(事务管理是不可能的)。

事务提交():

如果所有操作都成功执行,那么我们通过调用commit()方法手动提交事务。

事务回滚():

如果任何一项操作失败,那么我们通过调用rollback()方法取消事务。

connection.setAutoCommit(false);
try{
----------
----------
connection.commit();
}catch(Exception e){
connection.rollback();
}

完整示例:

package com.onlinetutorialspoint.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Jdbc_TransactionManagement_Example {
    public static void main(String[] args) throws Exception {
        Connection connection = null;
        Statement statement = null;
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/onlinetutorialspoint", "root",
                "123456");
            connection.setAutoCommit(false);
            statement = connection.createStatement();
            statement
                .executeUpdate("insert person values ('5001','Hyderabad','Chandra Shekhar')");
            statement
                .executeUpdate("insert person values ('5002','Banglore','Ram')");
            connection.commit();
            System.out.println("Transaction is commited.");
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
            connection.rollback();
        }
    }
}

输出:

Transaction is committed.

如果我们更新语句

statement.executeUpdate("insert person values ('5003','Hyderabad','Chandra Shekhar')");
statement.executeUpdate("insert person values ('5001','Banglore','Ram')");

我们可以得到如下异常,事务将被回滚。

om.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '5001' for key 'PRIMARY'
Transaction is rollbacked !

以上就是关于“JDBC事务管理示例”的介绍,大家如果想了解更多相关知识,可以关注一下赢咖4的JDBC视频教程,里面的课程内容通俗易懂,适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>