锁:当我们在处理数据时,尤其的并发系统中,我们就需要通过一些机制来保证这些数据在操作过程中不会被外界修改,这样的机制,我们称为 “锁” ,即给我们选定的目标数据上锁,使其无法被其他程序修改。
Hibernate 为我们提供了两种锁机制:即通常所说的 “悲观锁( Pessimistic Locking )”和“乐观锁( Optimistic Locking ) ” 。
悲观锁( Pessimistic Locking )
悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据).因此,在整个数据处理过程中将数据处于锁定状态。
一个最典型的悲观锁应用是for update语句。
select * from ruser where name=”lilei” for update 这样就锁定了名字为"lilei"的记录,本次事务提交之前(事务提交时会释放事务过程中的锁),外界无法修改这些记录。