乐观锁使用经验一则
假设需要用乐观锁来实现一个物品数量增减操作的原子性,可以这样子做:(框架使用spring和hibernate)
@Entity@Table(name="tbl_gift")public class Gift {...//乐观锁@Versionprivate Long version;...}
@Transactional(readOnly=false, propagation=Propagation.REQUIRED)public void exchange(){ ... 修改gift的剩余数量(采用乐观锁); ...}
@Transactional(readOnly=false, propagation=Propagation.REQUIRED)public void exchange(){ ... 修改gift的剩余数量(采用乐观锁); ...}public void exchange2() throws Exception {try {exchange();} catch(org.hibernate.StaleObjectStateException e) {exchange();}}