数据库的锁机制

数据库的锁机制

在进行SELECT操作时,通常接下来会进行UPADTE的操作,如果希望COMMIT前,所SELECT的数据不会被其他线程SELECT出来,则两个线程都加FOR UPDATE/FOR UPDATE NOWAIT关键字,这样数据库就会锁定这些记录,加了FOR UPDATE的会进行等待,直到上一线程结束,加了FOR UPDATE NOWAIT的线程则直接抛出异常,这种机制称为数据库的锁机制。

HIBERNATE中的实现:

LockMode.NONE :有缓存用缓存,没缓存则从数据库读 
LockMode.READ :直接从数据库读,不使用缓存数据 
LockMode.WRITE :在insert update数据的时候,HIBERNATE内部使用的。 
以上3种均为HIBERNATE级别的锁,也就是缓存级别的锁。 

下面2种为数据库级别的锁: 
LockMode.UPGRADE:相当于SQL语句select for update,被select的数据都被数据库锁住了,不能被其他事务修改。 
LockMode. UPGRADE_NOWAIT :是ORACLE数据库特有的select for update nowait

你可能感兴趣的:(数据库的锁机制)