数据库事物 jdbc事物 spring事物 隔离级别:脏幻不可重复读

1.数据库事物: 事物的概念 a给b打100块钱的例子

 

2.jdbc事物: 通过下面代码实现

private Connection conn = null;  

private PreparedStatement ps = null;  

try {  

    conn.setAutoCommit(false);  //将自动提交设置为false       

    ps.executeUpdate("修改1 SQL"); //执行修改1操作  

    ps.executeQuery("修改2 SQL");  //执行修改2操作  

    conn.commit();      //当两个操作成功后手动提交       

} catch (Exception e) {  

    conn.rollback();    //一旦其中一个操作出错都将回滚,使两个操作都不成功  

    e.printStackTrace();  

 

3.spring事物: 通过xml配置和注解来配置和使用事物, 事物的实现还是jdbc事物, 不过被spring包装了, 我们看不见

 

4.脏幻不可重复读是在已经有了事物之后会发生的一些事情, 数据隔离级别方面的概念

脏读:

强调的是第二个事务读到的不够新。

幻读 : 
重点在于新增或者删除, 同样的条件 ,   第 1 次和第 2 次读出来的记录数不一样

不可重复读 

重点是修改, 同一事务,两次读取到的数据不一样。

 

Spring声明性事务 隔离级别

l          DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 . 而MySQL的默认事务隔离级别是:Repeatable Read

l          READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )

l          READ_COMMITTED  会出现不可重复读、幻读问题(锁定正在读取的行)

l          REPEATABLE_READ 会出幻读(锁定所读取的所有行)

l          SERIALIZABLE 保证所有的情况不会发生(锁表)

 

posted @ 2017-03-28 17:37  WakamiyaShinobu  阅读(385)  评论(0编辑  收藏  举报