`

JDBC事务隔离及保存点

 
阅读更多
package com.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionManager {
	private static Connection connection;
	public static Connection getConnection() throws ClassNotFoundException, SQLException{
		Class.forName("com.mysql.jdbc.Driver");//加载驱动类
		connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
		return connection;
	}
}
 
package com.test;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import com.db.ConnectionManager;
/**
 * JDBC设置事务隔离级别
 * @author 守望幸福
 *
 */
public class UnAutoCommit {
	static Connection con;
	public static void main(String[] args) throws SQLException {
		try {
			con=ConnectionManager.getConnection();
			con.setAutoCommit(false);//connection默认自动提交事务,false为不自动提交
			DatabaseMetaData dm=con.getMetaData();
			System.out.println("是否支持事务隔离"+dm.supportsTransactions());
			System.out.println("支持事务隔离0"+dm.supportsTransactionIsolationLevel(Connection.TRANSACTION_NONE));
			System.out.println("支持事务隔离1"+dm.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_UNCOMMITTED));
			System.out.println("支持事务隔离2"+dm.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_COMMITTED));
			System.out.println("支持事务隔离4"+dm.supportsTransactionIsolationLevel(Connection.TRANSACTION_REPEATABLE_READ));
			System.out.println("支持事务隔离8"+dm.supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE));
			con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);//设置事务隔离级别
			Statement stmt=con.createStatement();
			int row=stmt.executeUpdate("insert into student(name,score,subject)values('李四',20,'数学')");
			System.out.println("事务提交前row:"+row);
			con.commit();
			System.out.println("事务提交后row:"+row);
		} catch (Exception e) {
			con.rollback();
		}
	}

}
 
package com.test;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;

import com.db.ConnectionManager;
/**
 * SavePoint JDBC3之后引入的新特性
 * SavePoint 接口允许用户将事务分割为多个阶段, 用户可以指定回滚事务到特定保存点,并不会回滚到事务的起点
 * @author 守望幸福
 *
 */
public class SavePoint {
	static Connection con;
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		con=ConnectionManager.getConnection();
		con.setAutoCommit(false);//connection默认自动提交事务,false为不自动提交
		con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
		Statement stmt=con.createStatement();
		int row=stmt.executeUpdate("insert into student(name,score,subject)values('李四',20,'数学')");
		Savepoint savepoint=con.setSavepoint("first savePoint");//设置保存点
		int row1=stmt.executeUpdate("insert into student(name,score,subject)values('王五',80,'哲学')");
		con.rollback(savepoint);//回滚至保存点,在保存点之前的事务依旧提交数据持久化到数据库中,保存点之后的事务回滚,数据不会持久化
		con.commit();
		System.out.println("row:"+row);
		System.out.println("row1:"+row1);
	}

}
 
分享到:
评论

相关推荐

    JDBC事务的保存点处理

    在Java数据库连接(JDBC)中,事务是执行数据库操作的基本单元,确保数据的一致性和完整性。当我们在程序中处理大量数据库操作...在实际开发中,结合事务隔离级别和保存点,我们可以构建出高效且可靠的数据库应用程序。

    JDBC事务 JTA事务 传播特性 隔离级别

    **JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...

    JDBC事务管理.docx

    JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...

    JDBC事务控制--讲述如何控制JDBC事务

    ### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...

    JDBC事务操作例子所需jar包

    在Java中,JDBC事务处理主要涉及以下几个关键概念: 1. **Connection对象**:它是与数据库的会话,通过该对象可以开启、提交和回滚事务。在连接池中获取到的Connection通常已经自动开启了事务,但如果没有,可以...

    JDBC事务管理项目

    “JDBC事务管理项目”涵盖了如何在Java应用中利用JDBC进行事务控制,包括开启手动事务、提交、回滚以及设置事务隔离级别等。理解并掌握这些知识对于开发健壮的数据库应用至关重要,能够确保数据的完整性和一致性。

    JDBC专题(六)-JDBC专题-事务的隔离级别.docx

    在MySQL中查询当前的事务隔离级别可以通过以下命令实现: ```sql SELECT @@tx_isolation; ``` MySQL数据库默认的事务隔离级别是 `REPEATABLE READ`。 #### 结论 综上所述,事务及其四大特性对于确保数据库操作的...

    spring jdbc 事务

    在描述中提到的博客链接(由于实际链接无法访问,这里无法提供具体细节),可能详细讲述了如何在Spring中配置和使用JDBC事务,包括示例代码和常见问题解决。在实际项目中,理解并正确应用这些事务管理机制对于保证...

    JDBC的事务初探

    5. **设置事务隔离级别** 使用`setTransactionIsolation()`方法可以设置事务的隔离级别,如: ```java connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); ``` 6. **异常处理与事务** ...

    在Java的JDBC使用中设置事务回滚的保存点的方法

    在JDBC 3.0及更高版本中,`Connection`对象提供了两个与保存点相关的API: 1. `setSavepoint(String savepointName)`:创建一个新的保存点,并返回一个`Savepoint`对象。这个对象代表了保存点的标识,可以用于后续...

    jdbc入门、分页以及事务

    4. **事务隔离级别**: 包括READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE,不同的隔离级别决定了并发操作的可见性,可按需求设置。 5. **保存点**: 使用`Connection`的`setSavepoint()`和`...

    Java事务管理学习之JDBC详解

    Java事务管理学习之JDBC详解是Java事务管理学习的重要组成部分,文章详细介绍了Java事务管理学习之JDBC的相关知识点,包括事务的概念、特性、类型、JDBC事务管理等。 一、事务的概念 事务是数据库的逻辑工作单位,...

    JDBC事物应用源码文件

    以下是关于JDBC事务应用的核心知识点: 1. **事务的基本概念**:事务是数据库操作的基本单元,它封装了一组逻辑操作。事务必须满足ACID(原子性、一致性、隔离性和持久性)属性,以保证数据的一致性。 2. **JDBC中...

    JDBC事务处理、提交、回滚。.docx

    1. **JDBC事务的基本概念** - **事务**:事务是数据库系统中执行的一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)...

    jdbc+spring+mysql事务理解和分析

    数据库系统提供了多种事务隔离级别,包括读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。在Spring中,可以通过`@Transactional`注解的`...

    JDBC笔记.pdf

    此外,还可以设置事务的保存点,并在需要时回滚到保存点。 笔记中还介绍了JDBC的核心API,包括DriverManager类、Connection接口、Statement接口、PreparedStatement接口和ResultSet接口。DriverManager类用于管理和...

    day18-事务与连接池 3.jdbc中事务操作介绍

    在实际开发中,Spring框架提供了对JDBC事务管理的高级支持,通过声明式事务管理,开发者可以在XML配置或注解中定义事务边界,简化事务处理。例如,使用`@Transactional`注解可以声明一个方法为事务方法,Spring会...

    你不知道的JDBC高级应用

    1.批处理:对数据库的CRUD速度会有质...7.事务:设定事务的保存点,可以把事务隔离. crud c:create r:read u:update d:delete JTA 分布式事务 跨数据库的事务 JNDI TomCat 方便分布式处理 dbcp JDBC连接池 ............

    JDBC总结——事务

    在实际应用中,开发人员需要根据业务需求选择合适的事务隔离级别,以平衡数据一致性与系统性能。通过`setTransactionIsolation()`方法可以设置事务的隔离级别。 总之,理解并熟练掌握JDBC事务管理对于编写健壮的...

    java事务管理和事务分类

    **JDBC事务**:这是最基本的事务管理方式,通过`Connection`对象的`setAutoCommit()`来开启或关闭自动提交,`commit()`和`rollback()`用于提交或回滚事务。JDBC事务局限于单个数据库连接,无法处理跨数据库的事务。 ...

Global site tag (gtag.js) - Google Analytics