
JDBC事务简介
JDBC事务只不过是将工作单元执行在一个命令中,数据库的ACID属性将描述使用JDBC的事务管理。JDBC事务中的ACID被称为原子性、一致性、隔离性和持久性,基本上在JDBC连接接口中会提供管理事务的方法。我们可以使用setAutoCommit、commit和rollback方法来管理JDBC的事务。我们可以在事务中使用PreparedStatement来执行SQL语句,在使用PreparedStatement后,语句将按照事务顺序执行。
语法
下面是JDBC事务的语法,如下所示。
使用简单语句的JDBC事务
Public static void main /* main method */ (string args [])
Class.forName (“database driver name”)
Connection con_object DriverManager.getConnection (“connection string”)
Con_object.setAutoCommit (value)
Statement stmt_object = con_object.createStatement ();
Stmt_bject.executeUpdate(“SQL query”);
Stmt_bject.executeUpdate(“SQL query”);
con_object.commit();
con_object.rollback();
Con.close();
使用Prepared语句的JDBC事务
Public static void main /* main method */ (string args [])
Class.forName (“database driver name”)
Connection con_object DriverManager.getConnection (“connection string”)
Con_object.setAutoCommit (value)
PreparedStatement Prp_stmt_object = con_object.prepareStatement (“SQL query”);
Prp_stmt_object.executeUpdate (“);
con_object.commit ();
con_object.rollback ();
Con.close ();
JDBC事务的参数描述语法
- 数据库驱动程序名称 - 为了连接指定的数据库,我们需要一个数据库驱动程序名称。我们需要加载数据库驱动程序以连接到指定的数据库。
- 连接字符串 - 这包含数据库服务器的用户名、密码、主机名和端口等字符串。
- SetAutoCommit - 这是交易中使用的连接接口的方法。这个方法的默认值是true,意味着我们可以在不发出提交命令的情况下提交所有的事务。我们可以通过发出布尔值为false来禁用它。
- 提交 - 这是一个连接接口的方法,用于提交数据库服务器上正在运行的事务。我想我们没有将AutoCommit方法设置为false,我们需要在一个成功的事务后发出一个提交命令。
- Rollback - 这个方法是用来取消数据库服务器上先前运行的事务。我们可以在事务提交前回滚。我们可以在设置setAutoCommit方法的false值后回滚事务。
- Execute update - 这个方法用来执行PreparedStatement方法的语句。它将执行写在PreparedStatement下的语句。
JDBC中的交易是如何工作的?
- 事务只不过是在一个单一的语句块中执行的SQL查询块。
- 我们知道,所有的JDBC连接都是自动提交模式,使用这种模式,所有的事务都会在每个事务的成功执行后提交。
- 默认情况下,JDBC连接模式被设置为true,我们可以通过定义setAutoCommit方法的值来改变这个值为false。
- 以下是在JDBC中需要禁用自动提交事务的关键点。
- 我们可以通过禁用自动提交参数来使用分布式事务。
- 我们可以提高应用程序的性能。
- 我们还可以通过禁用事务的自动提交参数来保持业务的完整性。
- 下面是在事务中使用的连接接口的方法,如下所示。
- Void commit()方法
- Void setAutoCommit()方法
- 无效的rollback()方法
- Void setSavePoint()方法
- Void releaseSavePoint()方法
- JDBC的setAutoCommit包含一个布尔值,即真或假,我们可以使用setAutoCommit方法将该值设置为真或假。我假设我们将值设置为 "真",它将自动提交所有的事务。
- 保存点将给我们对事务的额外控制,这是我们在数据库服务器上使用事务完成的。
- release savepoint方法用于删除创建的保存点。我们可以使用setSavePoint方法来创建一个新的保存点。
- 我们不需要在成功执行后更新事务。
- 使用事务,我们可以提供数据的完整性,一致的视图和正确的应用语义给java兼容的驱动程序。
- 以下是在事务管理中使用的最重要的功能,如下。
- 提交
- 回滚
- 保存点
- 保存点在事务中非常有用,它可以在执行完所有的事务后回滚一个特定的事务。
- 我们已经创建了多个保存点,在数据库中使用事务来执行这一操作。
- 当我们在数据库服务器上进行回滚或提交操作时,任何我们已经创建的保存点都将自动被销毁或删除。
例子
下面的例子显示JDBC事务如下。
1.使用插入查询的JDBC事务
下面的例子显示了使用插入查询的事务,如下所示。我们使用了提交和setAutoCommit方法。
代码
public static void main /* main method */ (String[] args) throws Exception {
final String DB_CON = "jdbc:postgresql://localhost:5432/jdbc_tran";
final String USER_NAME = "postgres";
final String PASSWORD = "postgres";
Connection conn_tran = DriverManager.getConnection (DB_CON, USER_NAME, PASSWORD);
conn_tran.setAutoCommit (false);
System.out.println ("We have set setAutoCommit method value as false,");
Statement stmt_tran = conn_tran.createStatement ();
stmt_tran.executeUpdate ("insert into jdbc_tran values(1,'ABC')");
stmt_tran.executeUpdate ("insert into jdbc_tran values(2,'PQR')");
System.out.println ("Record inserted.");
conn_tran.commit ();
System.out.println ("Transaction committed.");
}
}

2.使用更新查询的JDBC事务
下面的例子显示了使用更新查询的事务,如下所示。我们使用了commit, setAutoCommit和rollback方法。
代码
public static void main /* main method */ (String[] args) throws Exception {
final String DB_CON = "jdbc:postgresql://localhost:5432/jdbc_tran";
final String USER_NAME = "postgres";
final String PASSWORD = "postgres";
Connection conn_tran = DriverManager.getConnection (DB_CON, USER_NAME, PASSWORD);
conn_tran.setAutoCommit (false);
Statement stmt_tran = conn_tran.createStatement ();
stmt_tran.executeUpdate ("update jdbc_tran set id = 11 where id = 2 ");
System.out.println ("Record updated.");
conn_tran.commit ();
System.out.println ("Transaction committed.");
conn_tran.rollback ();
System.out.println ("Transaction roll backed.");
}
}

3.使用删除查询的JDBC事务
下面的例子显示了使用删除查询的事务如下。我们使用了提交、setAutoCommit和回滚方法。
代码
public static void main /* main method */ (String[] args) throws Exception {
final String DB_CON = "jdbc:postgresql://localhost:5432/jdbc_tran";
final String USER_NAME = "postgres";
final String PASSWORD = "postgres";
Connection conn_tran = DriverManager.getConnection (DB_CON, USER_NAME, PASSWORD);
conn_tran.setAutoCommit (false);
Statement stmt_tran = conn_tran.createStatement ();
stmt_tran.executeUpdate ("Delete from jdbc_tran where id = 1");
System.out.println ("Record deleted.");
conn_tran.commit ();
System.out.println ("Transaction committed.");
conn_tran.rollback ();
System.out.println ("Transaction roll backed.");
} }

总结
JDBC事务只不过是一个单元的工作。事务对于提高应用程序的性能非常有用。事务中有三种类型的功能,即提交、回滚和保存点。提交、回滚、设置自动提交、设置保存点和释放保存点是事务中可用的方法。