Hibernate事务隔离级别:
如果没有锁定且多个用户同时访问一个数据库,当他们的事务同时使用相同的数据时可能会发生问题.由于并发操作带来的数据不一致包括:
- 丢失数据(lost update)
- 修改,读”脏”数据(脏读 dirty read)
- 虚读(phantom read)
- 不可重复读(unrepeated read)
第二类丢失更新(second lost updates):
丢失数据(lost update):
在完全未隔离事务的情况下,两个事务更新同一条数据资源,某一事物异常终止,回滚造成第一个完成的更新也同时丢失.
脏读(dirty read):
第二个事务查询到第一个事务还未提交的更新数据,形成脏读
虚读(phantom read):
一个事务执行了两次查询,第二次结果集包含第一次中没有或者某些行已经删除,造成两次结果不一致,只是另一个事务在这两次查询中插入或者删除造成的.
不可重复读(unrepeated read):
一个事物两次读取同一行数据,结果得到不同状态结果,如中间正好另一个事务更新了该数据,两次结果相异,不可信任.
第二类丢失更新(second lost updates):
如果两个事务都读取同一行,然后两个都进行写操作,并提交,第一个事务所做的改变就会丢失.
数据库事务隔离级别
为了解决数据库事务并发运行时的各种问题数据库系统提供四种事务隔离级别:
1. Serializable 串行化
2. Repeatable Read 可重复读
3. Read Committed 可读已提交
4. Read Uncommitted 可读未提交
使用Hibernate设置数据库隔离级别
在Hibernate的配置文件中可以配置数据库事务隔离级别.每一个隔离级别用一个整数表示
8 - Serializable 串行化
事务不会发生并发,一个事物执行完成,下一个事物才可执行
<