LockMode
int level;
String name;
锁的级别:
NONE:0
READ:5
UPGRADE:10
UPGRADE_NOWAIT:10
WRITE:10
FORCE:15
notice:WRITE lock is not a valid mode for load() or lock()
如果使用的是oracle9i数据库则,相应的锁所产生的SQL语句如下:
Method: session.load():
LockMode.UPGRADE_NOWAIT
for update nowait
LockMode.UPTRADE
for update
LockMode.WRITE
an exception occur
LockMode.READ
as none
Method: query.setLockMode():
LockMode.UPGRADE
for update of echoinfo0_.ID
LockMode.UPGRADE_NOWAIT
for update of echoinfo0_.ID nowait
LockMode.WAIT
for update of echoinfo0_.ID
LoclMode.READ
这里提供一个程序实现的样例:
java 代码
- /*
- * Created on 2007-5-17
- */
- package com.snow.hib.oracle;
- import org.hibernate.*;
- import org.hibernate.LockMode;
- /**
- *@author anwxAn Weixiao
- *@version $Id$
- */
- public class Test {
- private static final Session session = HibernateUtil.currentSession();
- /**
- * demo method one
- * @param id
- * @return
- */
- public EchoInfo findEchoInfo(String id) {
- /*
- * select
- * echoinfo0_.ID as ID0_0_,
- * echoinfo0_.MESSAGE as MESSAGE0_0_
- * from
- * Echo_Info_anwx echoinfo0_
- * where
- * echoinfo0_.ID=?
- * LockMode.UPGRADE_NOWAIT
- * for update nowait
- * LockMode.UPTRADE
- * for update
- * LockMode.WRITE
- * an exception occur
- * LockMode.READ
- * as none
- */
- EchoInfo info = (EchoInfo) session.load(EchoInfo.class, "123456",
- LockMode.READ);
- return info;
- }
- /**
- * demo method two
- *
- */
- public static void getCounts() {
- /*
- * select
- * echoinfo0_.ID as ID0_0_,
- * echoinfo0_.MESSAGE as MESSAGE0_0_
- * from
- * Echo_Info_anwx echoinfo0_
- * --下面是使用不同级别的锁所产生的不同的SQL in oracle9i
- * LockMode.UPGRADE
- * for update of echoinfo0_.ID
- * LockMode.UPGRADE_NOWAIT
- * for update of echoinfo0_.ID nowait
- * LockMode.WAIT
- * for update of echoinfo0_.ID
- * LoclMode.READ
- *
- */
- int counts = 0;
- try {
- Query query = session.createQuery("from EchoInfo m");
- query.setLockMode("m", LockMode.WRITE);
- counts = query.list().size();
- } catch (HibernateException e) {
- System.out.println("error occur");
- }
- System.out.println("counts:" + counts);
- }
- public static void main(String[] args) {
- Test test = new Test();
- System.out.println("Start.");
- EchoInfo info=test.findEchoInfo("123456");
- System.out.println("ID: "+info.getId());
- System.out.println("Message:"+info.getMessage());
- getCounts();
- session.close();
- }
- }