你是说session.buildLockRequest(LockOptions.NONE/READ/UPGRADE).lock(Object entity);吗?
这句话整体上的作用是将指定的entity对象放入session对象的persistenceContext(简称PC)中去,打上MANAGED标记。
NONE和READ还有UPGRADE是三个LockOptions的选项。NONE表示将entity对象放入PC中的时候不会向数据库发出查询语句;READ选项表示将entity对象放入PC中的时候会同时向数据库发出select查询语句;UPGRADE表示将entity对象放入PC中的时候会向数据库发出select查询语句,而且,还会加上for update语句。
for update语句的作用是在查询的同时将数据锁住,其他人企图改变数据的时候就会进入等待状态,直到加锁的一方完成一次事务操作。我估计你说的锁是指这个吧。
标签:Hibernate