Mybatis笔记
2020.06.06
Mybatis
- mybatis【总结】 (3y)
- mybatis【入门】 (3y)
- mybatis【配置文件】(3y)
- mybatis【关联映射】(3y)
- mybatis【缓存、代理、逆向工程】(3y)
- mybatis【与Spring整合】(3y)
- mybatis【面试题】(3y)
2020.06.22
jdbc事务的隔离级别
数据库定义了4个隔离级别:
- Serializable【可避免脏读,不可重复读,虚读】
- Repeatable read【可避免脏读,不可重复读】
- Read committed【可避免脏读】
- Read uncommitted【级别最低,什么都避免不了】
分别对应Connection类中的4个常量 - TRANSACTION_READ_UNCOMMITTED
- TRANSACTION_READ_COMMITTED
- TRANSACTION_REPEATABLE_READ
- TRANSACTION_SERIALIZABLE
脏读:⼀个事务读取到另外⼀个事务未提交的数据
例⼦:A向B转账,A执⾏了转账语句,但A还没有提交事务,B读取数据,发现⾃⼰账户钱变多了!B跟 A说,我已经收到钱了。A回滚事务【rollback】,等B再查看账户的钱时,发现钱并没有多。
不可重复读:⼀个事务读取到另外⼀个事务已经提交的数据,也就是说⼀个事务可以看到其他事务所做的修改
//关闭事务【⾃动提交】
connection.setAutoCommit(true);
} catch (SQLException e1) {
e1.printStackTrace();
}
注:A查询数据库得到数据,B去修改数据库的数据,导致A多次查询数据库的结果都不⼀样【危害:A
每次查询的结果都是受B的影响的,那么A查询出来的信息就没有意思了】
虚读(幻读):是指在⼀个事务内读取到了别的事务插⼊的数据,导致前后读取不⼀致。
注:和不可重复读类似,但虚读(幻读)会读到其他事务的插⼊的数据,导致前后读取不⼀致
简单总结:脏读是不可容忍的,不可重复读和虚读在⼀定的情况下是可以的【做统计的肯定就不⾏】。