事务
2018-09-12 本文已影响0人
Mango_lxh
1、几个概念:
Read unommited 未提交读:即没有提交就能得到(发出insert语句,但没有提交(未执行commit();),数据库端就能得到数据,这种情况使用很少。
Read commited 提交读:即提交后数据库才能得到,是Oracle的默认隔离级别(可加悲观锁,避免不可重复读)
Repeatable Read 可重复读:是mysql的默认隔离级别
Serialiazble序列化读 :即串行,并发性不好,使用很少
脏读:未提交即可从数据库读出
不可重复读:在读出数据时,别人修改了数据,再重复读时不是原有的数据,出现错误(解决方法:加悲观锁)
幻读:当读出5条数据时,别人又增加了数据,再重复读时,出现了多余5条的数据。

2、flush
flus作用
(1)清理缓存(清空session临时集合中的数据)
(2)执行sql语句
(3)给map里的existsInDatebase(是否存入数据库)设定标记
session在什么情况下执行flush
- 默认在事务提交时
- 显示的调用flush
hibernate按照save(insert),update、delete顺序提交相关