资讯专栏INFORMATION COLUMN

Java知识点总结(JDBC-事务)

Zachary / 1502人阅读

摘要:隔离级别个等级的事务隔离级别,在相同的数据环境下,使用相同的输入,执行相同的工作,根据不同的隔离级别,可以导致不同的结果。不同事务隔离级别能够解决的数据并发问题的能力是不同的。

Java知识点总结(JDBC-事务)

@(Java知识点总结)[Java, JDBC]

事务 事务基本概念

一组要么同时执行成功,要么同时执行失败的 SQL 语句。是数据库操作的一个执行单元!

事务开始于:

执行 commit 或 rollback 语句。

执行一条 DDL 语句,例如 create table 语句;在这种情况下,会自动执行 commit 语句。

执行一条 DCL 语句,例如 grant 语句;在这种情况下,会自动执行 commit 语句。

断开与数据库的连接。

执行了一条 DML 语句,该语句却失败了;在这种情况下,会为这个无效的 DML 语句执行 rollback 语句。

事务的四大特点(ACID)

atomicity(原子性)

表示一个事务内的所有操作是一个整体, 要么全部成功,要么全失败

consistency(一致性)

表示一个事务内有 一个操作失败时 ,所有的更改过的数据都必须 回滚到修改前的状态 ;

isolation(隔离性)

事务查看数据时 数据所处的状态 ,要么是另一并发事务 修改它之前 的状态,要么是另一事务 修改它之后 的状态,事务不会查看中间状态的数据。

durability(持久性)

持久性事务完成之后,它对于系统的 影响是永久性的 。

事务并发处理可能引起的问题

读脏(dirty read):一个事务读取了另一个事务尚未提交的数据,

不可重复读(non-repeatable read):一个事务的操作导致另一个事务前后两次读取到不同的数据

幻读(phantom read):一个事务的操作导致另一个事务前后两次查询的结果数据量不同。

隔离级别

4个等级的事务隔离级别,在相同的数据环境下,使用相同的输入,执行相同的工作,根据不同的隔离级别,可以导致不同的结果。不同事务隔离级别能够解决的数据并发问题的能力是不同的。

SERIALIZABLE(串行化)

不会出现任何并发问题,因为它是对同一数据的访问是串行的,非并发访问的;

性能最差

REPEATABLE READ(可重复读)(MySQL)

防止脏读和不可重复读,不能处理幻读

性能比SERIALIZABLE好

READ COMMITTED(读已提交数据)(Oracle)

防止脏读,不能处理不可重复读和幻读;

性能比REPEATABLE READ好

READ UNCOMMITTED(读未提交数据)

可能出现任何事物并发问题,什么都不处理。

性能最好

MySQL隔离级别

MySQL的默认隔离级别为Repeatable read,可以通过下面语句查看:

SELECT @@`TX_ISOLATION`;

也可以通过下面语句来设置当前连接的隔离级别:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ ;//[4选1]
JDBC设置隔离级别

con.setTransactionIsolation(int level) :参数可选值如下:

Connection.TRANSACTION_READ_UNCOMMITTED;
Connection.TRANSACTION_READ_COMMITTED;
Connection.TRANSACTION_REPEATABLE_READ;
Connection.TRANSACTION_READ_SERIALIZABLE。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71462.html

相关文章

  • Java3y文章目录导航

    摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...

    KevinYan 评论0 收藏0
  • JDBC常见面试题

    摘要:常见面试题操作数据库的步骤操作数据库的步骤注册数据库驱动。可以防止注入,安全性高于。只有隔离级别才能防止产生幻读。对象维护了一个游标,指向当前的数据行。一共有三种对象。 以下我是归纳的JDBC知识点图: showImg(https://segmentfault.com/img/remote/1460000013312769); 图上的知识点都可以在我其他的文章内找到相应内容。 JDBC...

    Yuqi 评论0 收藏0
  • Java面试前需要了解的东西

    摘要:我在面试前针对基础也花了不少的时间,期间也将自己写过的博文粗略地刷了一遍,同时也在网上找了不少比较好的资料部分是没看完的。看面试题也是校验自己是否真正理解了这个知识点,也很有可能会有新的收获。 一、前言 只有光头才能变强 回顾前面: 广州三本找Java实习经历 上一篇写了自己面试的经历和一些在面试的时候遇到的题目(笔试题和面试题)。 我在面试前针对Java基础也花了不少的时间,期间也将...

    renweihub 评论0 收藏0
  • 面试分享:最全Spring事务面试考点整理

    摘要:和事务的关系关系型数据库某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务。事务的传播特性,,,,,,强制要求要有一个物理事务。外围事务不会被内部事务的回滚状态影响。不支持当前事务。 Spring和事务的关系 关系型数据库、某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务。 Spring很显然不是事务性资源,但是它可...

    graf 评论0 收藏0
  • Java相关

    摘要:本文是作者自己对中线程的状态线程间协作相关使用的理解与总结,不对之处,望指出,共勉。当中的的数目而不是已占用的位置数大于集合番一文通版集合番一文通版垃圾回收机制讲得很透彻,深入浅出。 一小时搞明白自定义注解 Annotation(注解)就是 Java 提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解) 是一个接口,程序可以通过...

    wangtdgoodluck 评论0 收藏0

发表评论

0条评论

Zachary

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<