java ssh中的高并发数据处理方法!!
描述一下情况:
在一个表中,某个用户登录了对其中一条数据进行了更新,但是同一时间也有一个用户进行了更新,那么怎么样处理这种情况呢?
银行帐号中,某一用户对A帐号取出了100元,其中还有余额1000元,同一时间也有另外的几个用户对A帐号进行取钱,那么怎么样解决这种问题呢?
Java code
public void updateAcc(){
Account ac = XXdao.getById("A"); // 同时几个用户获得
ac.setYe(ac.getYe()-100); // 都进行了操作
XXdao.update(ac); // 更新的时候...
}
到最后的结果有没有可能是只少了100元??另外几个人就等于白拿钱了呢??
使用spring的@transactional这个只是开启了事务,并没有锁定数据,用户还是能更新的。怎么样在ssh中解决这个问题呢??
求教..
------解决方案--------------------
看看悲观锁和乐观锁吧,我就用悲观锁给你,你在get的时候get(entityClass, id, LockMode.READ);