当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新,这时就需要用到乐观锁。这是数据库中的基本东西。
例如A,B俩人同时在修改一条记录,A将记录中的某个属性的值修改为50,B将其修改为100.这种情况下,如果A先提交修改,那么当B提交修改时,A的修改就会被B的修改所覆盖掉,这样便出现了修改丢失的情况。
那么乐观锁如何解决这种情况呢?首先需要为记录中加上Version这个属性,初始时给这个属性设定一个值,例如1。那么当A想要需改记录时会将自己最开始查看到的记录中的version与此时数据库中的version比较,如果相等便可修改。修改后改变Version的值,例如改为2,此时B也想修改这条记录,于是B也要对比version的值,而B之前拿到的version值为1,A修改后数据库中的Version值为2,version不一致于是B便无法修改,这就解决了问题。如图
那么如何实现乐观锁呢
第一步数据库中添加version字段
ALTER TABLE `user` ADD COLUMN `version` INT
第二步实体类添加version字段并添加 @Version 注解
@Ve