事务的学习,从jdbc开始:jdbc对事务的支持与实现

  在使用spring对项目进行开发时,所有的事务都是由spring来管理的。这样一来我们就可以不需要操心事务,可以专心的处理业务代码。

  但是,事务的底层究竟是如何实现的呢?那就从jdbc开始学习。

  在使用jdbc与数据库交互时,都是通过Connection来操作的。

  默认情况下,Connection会自动提交事务,即每执行一条SQL语句,也就对应一个事务。

  但是在开发过程中,一个事务通常会管理一组SQL统一的提交,来保证数据的安全。

  这时,就需要Connection#setAutoCommit(false)来阻止Connection的自动提交,并通过Connection#setTransactionIsolation()设置事务的隔离级别(具体可以百度)。

  当sql准备完成后,再通过Connection#commit提交事务,或者通过Connection#rollback()回滚事务

  代码示例:

package jdbcTransactionDemo;

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

import org.junit.Test;

public class transactionDemo {
    @Test
    public void demo() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/test", "root", "123456");
        conn.setAutoCommit(false);//关闭自动提交机制
        conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);//设置事务隔离级别

        try {
            Statement stmt=conn.createStatement();
            int rows=stmt.executeUpdate("insert into user(user_name,password) values(\"小明\",\"psw123456\")");
            System.out.println(rows);
            rows=stmt.executeUpdate("update user set user_name=\"小红\" where user_name=\"小明\"");
            System.out.println(rows);       
            conn.commit();//事务提交
        }catch (Exception e) {
            System.out.println("事务回滚了");
            e.printStackTrace();
            conn.rollback();//事务回滚
        }

    }
}
时间: 2024-10-24 00:41:11

事务的学习,从jdbc开始:jdbc对事务的支持与实现的相关文章

JDBC应用中的事务管理

在开发中,对数据库的多个表或者对一个表中的多条数据执行更新操作时要保证对多个更新操作要么同时成功,要么都不成功,这就涉及到对多个更新操作的事务管理问题了.比如银行业务中的转账问题,A用户向B用户转账100元,假设A用户和B用户的钱都存储在Account表,那么A用户向B用户转账时就涉及到同时更新Account表中的A用户的钱和B用户的钱,用SQL来表示就是: update account set money=money-100 where name='A'; update account set

day16 事务 - 数据库连接池 - 编写自己的jdbc框架

day16 事务-数据库连接池-编写自己的jdbc框架 1. 事务 1.1 事务回滚点 1.2 事务四大特性 ACID 1.2.1 隔离性 - 脏读 - 不可重复读 - 虚读(幻读) 1.3 事务的隔离级别 2. 数据库连接池 3. 常用开源数据库连接池(DataSource 接口的开源实现) 3.1 Apache DBCP 数据源 3.2 C3P0 数据源 (Spring 内置数据源) 4. 编写自己的 JDBC 框架 4.1 元数据 - DataBaseMetaData 4.2 做自己的 j

JAVAWEB开发之事务详解(mysql与JDBC下使用方法、事务的特性、锁机制)和连接池的详细使用(dbcp以d3p0)

事务简介 事务的概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功 在开发中,有事务的存在,可以保证数据的完整性. 注意:数据库默认事务是自动提交的,也就是发一条SQL 就执行一条.如果想多条SQL语句放在一个事务中执行,需要添加事务有关的语句. 如何开启事务? 事务的操作方式: 创建表: create table account( id int primary key auto_increment, name varchar(20), money double

深入探索spring技术内幕(八): Spring +JDBC组合开发和事务控制

一. 配置数据源 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/> <property name="

JDBC高级特性(二)事务、并发控制和行集

一.事务 事务是指一个工作单元,它包括了一组加入,删除,改动等数据操作命令,这组命令作为一个总体向系统提交运行,要么都运行成功,要么所有恢复 在JDBC中使用事务 1)con.setAutoCommit(false),取消自己主动提交 2)对数据库运行一个或多个操作(一个或多个SQL语句) 3)con.commit().提交事务(上面的第二部的多个操作就作为一个总体提交运行) 4)假设某个操作失败.通过con.rollback()回滚全部操作(撤销以上的操作,将数据恢复为运行前状态) 事务处理依

Java进阶学习第十七天——JDBC入门学习

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.05.11 lutianfei none JDBC JDBC介绍 JDBC是什么? JDBC(Java Data Base Connectivity,java数据库连接) SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC. 简单说,就是可以直接通过java语言去操作数据库. jdbc是一套标准,它是由一些接口与类组成的. 组成JDBC的类和接口 java.sql 类:Drive

Spring整合JDBC以及AOP管理事务

本节内容: Spring整合JDBC Spring中的AOP管理事务 一.Spring整合JDBC Spring框架永远是一个容器,Spring整合JDBC其实就是Spring提供了一个对象,这个对象封装了JDBC技术,它可以操作数据库,这个对象可以放入Spring容器,交给Spring容器来管理.所以我们主要是要学习这个对象:JDBCTemplate.这个对象和DBUtils中的QueryRunner非常相似. 1. 导包 4+2+2(测试需要的包spring-test,新版本测试时还需要sp

有关jdbc以及JDBC事务的相关操作

有关jdbc及jdbc事务的操作 一,什么是JDBC *Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法.JDBC也是Sun Microsystems的商标.我们通常说的JDBC是面向关系型数据库的. --以上来自百度百科.* 二,JDBC的本质 本质上jdbc就是一套接口,我们需要面向接口编程,而不是面向具体的类,达到解耦合的目的,各大数据库厂商 如

JMeter学习(八)JDBC测试计划-连接Oracle

一.测试环境准备   Oracle:10g  JDBC驱动:classes12.jar oracle安装目录下(oracle\product\10.2.0\db_1\jdbc\lib\classes12.jar)文件复制到JMeter/lib目录下  JMeter:jmeter-2.11 二.设计测试计划并运行 1.打开JMeter,点击测试计划 点击“浏览...”按钮,将你的JDBC驱动添加进来. 2.添加一个线程组,右键点击“线程组”,在下面添加一个“JDBC Connection Conf