0

我正在使用 JPA 2.0 - EclipseLink 开发仓库管理系统,我遇到了实现并发事务的需要,目前我正在实现时间戳差异以验证上次更改数量的时间:添加、删除、转移。

这种策略似乎有点缺陷,并且需要大量手动验证,这可能会产生错误,是否有 JPA 框架提供的替代方法?

4

1 回答 1

1

据我了解,您正在尝试使用时间戳实现乐观锁定策略。

JPA 在版本字段的帮助下提供了开箱即用的乐观锁定机制。基本上,您的实体中有一个版本字段(、short或),在实体的每次修改时都会增加/设置。intlongTimestamp

如果实体在保存时的版本与加载时的版本不同,OptimisticLockingException则抛出一个意味着另一个用户/线程在两者之间修改了实体。您可以捕获此异常并决定做什么:

  • 告诉保存第二个的用户重新开始修改
  • 合并修改(如果可能)
  • 覆盖

这取决于用例。

另请参阅:关于乐观锁定的 oracle javaee 6 教程

于 2012-09-08T12:12:16.147 回答