【hibernate框架】事务并发处理

事务并发处理:
a)事务:ACID(事务的四个特性)
   i.Atomic(原子性)、Consistency(一致性)、Itegrity(独立性)、Durability(持久性)
A:要么全部执行,要么不执行。
C:事务的运行不该变数据库中数据的一致性。
I:两个以上的事务不会出现交错执行的状态。
D:事务运行以后,系统的更新是永久的,不会无缘无故的回滚。


b)事务并发时可能出现的问题(参考孙卫琴的表)
1.第一类丢失更新(Lost Update)



2.脏读(duty read)



3.不可重复读(non-repeatable read)


4.第二类丢失更新(second lost update problem)


5.幻读(phantom read)重点说的是插入删除的操作



数据库的隔离机制:
不让它并发,在一定的时候处理它并发的问题,隔离它们,不让它们相互影响。
有四种隔离机制:(1.2.4.8)
1.read-uncommitted:能够去读那些没有提交的数据(允许脏读的存在)
2.read-committed:不会出现脏读,因为只有另一个事务提交才会读取来
结果,但仍然会出现不可重复读和幻读现象。
4.repeatable read:MySQL默认。可重复读,读数据读出来之后给它加把锁,
其他人先别更新,等我用完了你再更新。你的事务没完,其他事务就不可能改这条记录。
8.serializable:序列化,最高级别。一个一个来,不去并发。效率最低。
每一种数据库支持的隔离机制不一样(但大致少不了这四种)
设立级别的时候,一般会设立为2,避免脏读,并发性好。


查询数据库隔离机制的语句:select @@tx_isolation


对于hibernate,要想处理多个事务之间的并发,也得去设定事务的隔离级别。
也是上面4种。
设定hibernate的事务隔离级别
1.hibernate.connection.isolation=2(值是1,2,4,8)

2.用悲观锁、乐观锁

在我的另外一篇学习总结中有关于悲观锁和乐观锁在hibernate中的应用:http://blog.csdn.net/acmman/article/details/44176281

转载请注明出处:http://blog.csdn.net/acmman/article/details/44176065

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值