码迷,mamicode.com
首页 > 其他好文 > 详细

悲观锁与乐观锁

时间:2017-05-24 22:25:51      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:version   service   update   数据库   版本号   

    悲观锁机制是数据库自带,一般都是在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的控制



悲观锁与乐观锁

标签:version   service   update   数据库   版本号   

原文地址:http://7640143.blog.51cto.com/7630143/1929080

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!