我正在开发一个仓库管理系统,使用JPA 2.0 - EclipseLink,我遇到了实现并发事务的需要,目前我正在实现时间戳差异来验证上次修改数量的时间:添加,删除,转移。
这个策略看起来有点瑕疵,并且需要大量的手动验证,可能会产生错误,是否有其他方法可以做到这一点,由JPA框架提供?
答案 0 :(得分:1)
据我了解,您正在尝试使用时间戳实现乐观锁定策略。
JPA在版本字段的帮助下提供了开箱即用的乐观锁定机制。基本上,您的实体中有一个版本字段(short
,int
,long
或Timestamp
),在实体的每次修改时都会增加/设置。
如果实体在保存时的版本与加载时的版本不同,则会抛出OptimisticLockingException
,这意味着另一个用户/线程在其间修改了实体。您可以捕获此异常并决定做什么:
这取决于用例。
另请参阅:oracle javaee 6 tutorial on optimistic locking