hibernate lock

 一  悲观锁与乐观锁:

      1. 悲观锁:  是在执行查询的时候加上行级锁,类似select * from emp for update,这样其他它的事物则不能在该行上执行DM操作.

      2.乐观锁:   是采用版本控制,在工作单元结束时执行版本检查,如不一致,则抛异常StaleObjectStateException. 

 二.锁模式:

     1. LockMode FORCE 
         在数据库中强制增加对象的版本,来表明它已经被当前事务修改。相当于Java Persistence中LockModeType.WRITE,即相当加一个写的锁.( Similiar to UPGRADE except that, for versioned entities, it results in a forced version increment. )
    2. LockMode NONE (默认为该值)
        别到数据库中去取,除非对象不处于任何高速缓存中, 到数据库取对像时不进行加锁.( No lock required.)
    3. LockMode READ

        绕过所有高速缓存,并执行版本检查,来验证内存中的对象是否与当前数据库中存在的版本相同。
         (A shared lock. Objects in this lock mode were read from the database in the current transaction, rather than being pulled from a cache) 
     4. LockMode UPGRADE 
         相当于 select xxx from xxxx for update ,利用数据库加了行级锁,不允许其他事物进行DM操作.
     5. LockMode UPGRADE_NOWAIT 
         相当于 select xxx from xxx for update nowait ,仅oracle支持该操作.(Attempt to obtain an upgrade lock, using an Oracle-style select for update nowait.  )
     6. LockMode WRITE
          在执行插入或更新操作时hibernate会自动加上锁.(A WRITE lock is obtained when an object is updated or inserted )

猜你喜欢

转载自confiy.iteye.com/blog/1036335
今日推荐