简单阐述下Hibernate中锁机制

Hibernate中的锁机制
A 、乐观锁:
对多用户并发访问持有乐观的态度。
开发步骤:
     1 、实体对象(entity)中加入版本属性;
     2、 数据库表(table)中加入版本列;
     3 、xxx.hbm.xml 中加入<version />标签。
B 、悲观锁:
对多用户并发访问持有悲观观的态度。
数据库中锁得实现:
    1、数据库中查询操作加锁:select * from t_account for update;
    2、 数据库中插入等操作加锁 insert update delete db 默认加锁。
Hibernate 中锁的实现:
查询操作加锁(设置锁模式):
    Account account =(Account) session.get(Account.class, 111,LockMode.UPGRADE);
    Account account1 =(Account) session.load(Account.class, 111,LockMode.UPGRADE);
    Query query = session.createQuery("from Account as a where a.id = 111 ");
    query.setLockMode("a", LockMode.UPGRADE);
    Account account = (Account)query.uniqueResult();
Hibernate 锁模式:
LockMode.UPGRADE:
    如果别的用户先于我为数据库加锁,等待用户释放锁后,在加锁。
    LockMode.UPGRADE_NOWAIT:
如果别的用户先于我为数据库加锁,放弃操作,并抛出异常。

由于本人知识水平有限,总文章中倘若有错误的地方,欢迎批评指证。

posted on 2012-07-29 21:53  局部有血  阅读(743)  评论(0编辑  收藏  举报

导航