标签: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