美文网首页
JDBC事物隔离级别

JDBC事物隔离级别

作者: 会议室窗边 | 来源:发表于2020-07-06 10:26 被阅读0次
事物隔离级别用户指定事务中对数据的操作对其他事物的“可见性”。不同的事物隔离级别能够解决并发访问数据带来的不同的并发问题,而且会直接影响并发效率。数据并发可能会出现一下几种问题:

脏读:这种情况发生在事务中允许读取未提交的数据。例如,A事物修改了一条数据,但是未提交修改,此时A事物对数据的修改其他事物是可见的,B事物中能够读取A事物未提交的修改。一旦A事物回滚,B事物中读取就是不正确的数据。
不可重复读:这种情况发生在如下场景:
1)A事物中读取一行数据。
2)B事务中修改了改行数据。
3)A事物中再次读取该行数据将得到不同的结果。
幻读:种种情况发生在如下场景:
1)A事物通过WHERE条件读取若干行。
2)B事务中插入了符合条件的若干条数据。
3)A事务中通过相同的条件再次读取数据时将会读取到B事物中插入的数据。
JDBC遵顼SQL:2003规范,定义了4种事物隔离级别,另外增加了一种TRANSACTION_NONE,表示不支持事物,这几种事物隔离级别如下。
TRANSCATION_NONE:表示驱动不支持事物,这意味着他是不兼容JDBC规范的驱动程序。
TRANSCATION_READ_UNCOMMITTED:允许读取未提交更改的数据,这意味着可能出现脏读、不可重复读、幻读等现象。
TRANSCATION_READ_COMMITTED:表示在事务中进行的任何数据更改,在提交之前对其他认识是不可见的。这样可以防止脏读,但是不能解决不可重复读和幻读问题。
TRANSCATION_REPEATABLE_READ:该事物隔离级别能够解决脏读和不可重复读问题,但是不能解决幻读问题。
TRANSCATION_SERIALIZABLE:该事务隔离级别下,所有事物串行执行,能够有效解决脏读,不可重复读和幻读问题,但是并发效率低。
Connection对象的默认事物级别由JDBC驱动程序指定。通常它是底层数据源支持的默认事物隔离级别。Connection接口中提供了一个setTransactionIoslation()方法,允许JDBC客户端设置Connection对象的事物隔离级别,新设置的事物隔离级别会在之后的会话中生效。在一个事物中调用setTransactionIsolation()方法是否对当前事物有效取决于具体的驱动实现。JDBC规范建议在调用setTransactionIsolation()方法后,下一个新的事物开始生效。另外,JDBC驱动可能不完全支持除TRANSACTION_NONE之外的4个事物级别。
调用Connection对象的setTransactionIsolation()方法时,如果参数的驱动不支持是事物隔离级别,则驱动程序应该使用更高级别代替该参数级别,如果驱动不支持更高级别,就会抛出SQLExecption异常,可以调用DatabaseMetaData对象supportsTransactionIsolationLevel()方法判断是否支持某一事物隔离级别。
示例图:


事物隔离级别

相关文章

  • JDBC事物隔离级别

    脏读:这种情况发生在事务中允许读取未提交的数据。例如,A事物修改了一条数据,但是未提交修改,此时A事物对数据的修改...

  • 事物隔离级别

    事物隔离级别 脏读、不可重复读、幻读 脏读一个事务正在访问数据,并对数据进行了修改,而这种修改还没有提交到数据库中...

  • JDBC事务隔离级别

    在JDK源代码java.sql.Connection类中,明确定义了JDBC支持的4个类型的事务隔离级别,在Con...

  • 面试BAT前先搞定这些常问的MySQL面试题

    1、事物的并发?事物隔离级别,每个级别会引发什么问题?MySQL默认是哪个级别? 事物应该彼此完全隔离,以避免并发...

  • hibernate10

    两个事物都提交了,但没结果,这是事物的隔离级别,不可并发响应, 改变事物的隔离级别

  • 事物的隔离级别

    read-uncommit 脏读read-commit 可以避免脏读,但是不可重复读(修改数据的时候造成的)rep...

  • JDBC:事物管理与事物隔离界别

    Spring事务配置的五种方式 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配...

  • SQL--事物隔离级别

    数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repe...

  • Spring 事物的隔离级别

    前言:最近在看spring的事物 一、Spring事务隔离级别 ISOLATION_DEFAULT: 默认的隔离...

  • 事物隔离级别以及事物传播属性

    事物隔离级别 事物隔离级别是为解决脏读、幻读、不可重复读脏读:尚未被确定提交的数据被其他事物读取到幻读:进行sel...

网友评论

      本文标题:JDBC事物隔离级别

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