jdbc事务隔离级别

◇◆丶佛笑我妖孽 提交于 2019-11-29 21:34:37

一、jdbc事务隔离级别

事务指定一个隔离级别,该隔离级别定义一个事务必须与由其他事务进行的资源或数据更改相隔离的程度。隔离级别从允许的并发副作用(例如,脏读或虚拟读取)的角度进行描述。

a:脏读取:一个事务读取了另外一个并行事务未提交的数据

b:不可重复读取:一个事务再次读取之前读过的数据时得到的数据不一致,被另外一个事务修改。

 

把甲的安全级别设成是是允许自己可重复读的。那么甲事务在执行中读了一次ID10的数据的资金是1000,在执行过程中第二次它再去读这个ID10的资金有可能就不是1000了,因为乙在甲执行第二次查询之前第一次查询之后将这条数据的资金修改并提交了。

 

c:虚读:一个事务重新执行一个查询,返回的记录包含了其他事务提交的新记录

设定事务的隔离级别:con.setTransactionIsolation(Connection.isolationLevel);

 

四种隔离级别:

con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);//最底级别:只保证不会读到非法数据,上述3个问题有可能发生

con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); //默认级别:可以防止脏读

con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);//可以防止脏读和不可重复读取

con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); //最高级别:防止上述3种情况,事务串行执行,慎用 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!