由来:并发产生的。
如果一个管理员在修改一条数据,另一个管理员也在修改这条数据,那么这条数据的修改就会出现问题。
比如:银行卡有100元,你用银行卡在ATM机上取10元,同时你妈妈在网银上消费十元。
解决方法:使用悲观锁或乐观锁。
悲观锁:在修改这条数据的时候将这条数据进行锁定,别人进行修改的时候只能是等待。缺点:速度慢,如果一个人修改一条数据中去喝茶了什么的,这条数据一直锁定,就浪费了时间。
乐观锁:原理,采用更新版本的方式或时间戳(不精确)进行管理,给数据标记个版本号,如果张三来修改,修改成功,将版本号进行升级,如果李四也在进行修改,那么他在进行提交的时候从数据库中获取的数据就是无效的,导致李四不能进行修改,需要重新获取进行修改。
使用乐观锁解决的思路:
在程序中代码的体现为:
在实体类中新建一个成员变量 private int ver;//表示版本号
xxx.hbm.xml配置文件中<version name="ver" column="Version" type="java.lang.Long"/>
注意:vertion的配置必须在id下面。