更新时间:2022-04-22 09:58:49 来源:极悦 浏览1922次
在本教程中,极悦小编将告诉大家JDBC中的事务管理。一个事务代表一组操作,用于执行一项任务。
事务是一组命令,它将我们的数据库从一个一致状态带到另一个一致状态。
以下是关于 JDBC 中的事务管理的最重要的几点。
事务意味着,它是一组用于执行任务的操作。
事务可以达到成功状态或失败状态。
如果所有操作都成功完成,则事务成功。
如果任何一个操作失败,那么所有剩余的操作都将被取消,最终事务将进入失败状态。
基本交易有两种类型。
本地交易
全局/分布式事务
如果所有操作都在一个/同一个数据库上执行,则称为本地事务。
如果操作在多个数据库上执行,则称为全局事务。
示例: 如果我们将钱从account1转移到同一家银行的account2,则称为本地交易。如果我们将钱从account1转移到不同银行的account2,则称为全局或分布式交易。
JDBC 只能支持本地事务。对于分布式事务,我们必须使用 EJB 技术或 Spring Framework。
大家对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事务管理示例”的介绍,大家如果想了解更多相关知识,可以关注一下极悦的JDBC视频教程,里面的课程内容通俗易懂,适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习