JDBC操作事务

作者: 墨线宝 | 来源:发表于2021-01-18 21:11 被阅读0次

原文链接http://zhhll.icu/2020/java%E5%9F%BA%E7%A1%80/JDBC/JDBC%E6%93%8D%E4%BD%9C%E4%BA%8B%E5%8A%A1/

JDBC操作事务

事务

事务的ACID

  • 原子性 指事务是一个不可分割的单位,事务中的操作要么都发生,要么都不发生
  • 一致性 事务必须使数据库从一个一致性状态变换成另一个一致性状态
  • 隔离性 一个事务的执行不能被其他事务干扰,各事务之间是隔离的
  • 持久性 一个事务一旦被提交,对数据库中的数据的改变就是永久的

JDBC操作事务

可以使用JDBC来操作事务

conn.setAutoCommit(false); // 取消自动提交
conn.rollback();  //事务回滚
conn.commit(); //事务提交

SavePoint point = conn.setSavePoint(); // 设置事务保存点
conn.rollback(point); // 回滚到该保存点

数据库隔离级别

如果没有采取隔离机制的话,就会导致各种并发的数据问题

数据问题

  • 脏读 对于两个事务T1,T2,T1读取了已经被T2更新但还没有被提交的字段之后,若T2回滚,T1读取到的内容就是临时无效的
  • 不可重复读 对于两个事务T1,T2,T1读取了一个字段,T2更新了该字段,之后T1再次读取同一个字段,值就不同了
  • 幻读 对于两个事务T1,T2,T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行,T1再次读取同一个表,就会多出几行

隔离级别越高,数据一致性越好,但是并发性越弱

数据库的隔离级别

  • READ UNCOMMITED(读未提交的数据) 允许事务读取未被其他事务提交的变更,脏读、不可重复读、幻读问题都存在
  • READ COMMITED(读已提交的数据) 只允许事务读取已被其他事务提交的数据,可以避免脏读,但是不可重复读和幻读仍存在
  • REPEATABLE READ(可重复读) 确保事务可以多次从一个字段中读取相同的值,在这个事务持续期间,禁止其他事务对这个字段进行更新,可以避免脏读和不可重复读,但幻读仍存在(Mysql默认的事务隔离级别)
  • SERIALIZABLE(串行化) 确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,所有并发问题都可以避免,但是性能低下

JDBC设置隔离级别

// <code>Connection.TRANSACTION_READ_UNCOMMITTED</code>,
// <code>Connection.TRANSACTION_READ_COMMITTED</code>,
// <code>Connection.TRANSACTION_REPEATABLE_READ</code>
// <code>Connection.TRANSACTION_SERIALIZABLE</code>.
conn.setTransactionIsolation(int)

Mysql设置隔离级别

每个数据库连接都有一个全局变量@@tx_isolation,表示当前的事务隔离级别

-- 查看当前会话的隔离级别  Mysql5.7.20之后为transaction_isolation
select @@tx_isolation;
-- 查看系统的隔离级别   MySql5.7.20之后transaction_isolation
select @@global.tx_isolation;
-- 设置当前连接的隔离级别
set session transaction isolation level read committed;
-- 设置数据库系统的全局隔离级别
set global transaction isolation level read committed;

由于本身的博客百度没有收录,博客地址http://zhhll.icu

相关文章

  • JDBC 事务操作

    数据库事务 一组逻辑操作单元,使数据从一种状态变换到另一种状态 事务的操作:先定义开始一个事务,然后对数据作修改操...

  • Spring 事务原理

    事务的基本原理 Spring 事务 本质上是对JDBC事务的封装。对于纯JDBC操作数据库,想要用到事务,可以按照...

  • JTA事务

    JDBC和JTA事务区别简单的说 jta是多库的事务 jdbc是单库的事务。 jdbc事务JDBC事务由Connn...

  • JDBC之事务操作

    Demo1: Demo2:

  • JDBC操作事务

    原文链接http://zhhll.icu/2020/java%E5%9F%BA%E7%A1%80/JDBC/JDB...

  • 数据库(四)2018-08-27

    1. JDBC操作事务 2. JDBC进行批处理 3. DBCP的简介: 概述: DataBase Connect...

  • Java事务详解(1)

    基本概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。 事务类型 JDBC事务 ...

  • java事务

    1、java事务介绍 2、JDBC事务 3、JTA事务 1、java事务介绍 java事务分类:JDBC事务、...

  • JDBC

    JDBC JDBC控制事务:

  • java(事务)

    概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 数据库事务和JDBC事务 数...

网友评论

    本文标题:JDBC操作事务

    本文链接:https://www.haomeiwen.com/subject/hyqfzktx.html