首页 > 代码库 > 悲观锁与乐观锁
悲观锁与乐观锁
悲观锁机制是数据库自带,一般都是在sql后加for update,这里就暂时不讨论
JPA的乐观锁
1.首先在entity中加入对应的注解@Version
相当于执行
UPDATE MYENTITY SET ..., VERSION = VERSION + 1 WHERE ((ID = ?) AND (VERSION = ?))
在JPA里面,发现版本号不一致,会报异常,如果是单纯的Bean中,只能捕捉EJBException异常,但在service中,能捕捉到EJBTransactionRolledbackException,然后无非是给前台一个友好提示,说明该条数据操作失败等等。
2.如果某条数据不希望受version控制,建议可以执行原生sql
如:UPDATE TABLE SET ...,VERSION = VERSION + 1 WHERE ((ID = ?)即可
注意UPDATE是原子操作,一条UPDATE执行时,同一时间有且只有一条SQL执行,即使用原生SQL就可以摆脱VERSION的控制
悲观锁与乐观锁
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。