用JPAversioning/optimistic加锁防止旧数据被提交修改可以吗?
Is it okay to use JPA versioning/optimistic locking to prevent old data from being submitted for modification?
我想防止以下情况:
- 用户 1 打开一个允许他修改某些数据的网页
- 用户 2 打开一个允许他修改相同数据的网页
- 用户2修改并保存数据
- 用户 1 试图修改并保存数据(需要阻止)
我们目前使用 JPA 乐观锁定,它为我们的实体提供了一个版本号。在我们的业务逻辑中使用该版本属性来防止修改发生是否是一种不好的做法?
额外问题:如果可以使用版本属性,那么只允许发生 OptimisticLockException 以致修改失败是否是一种不好的做法?还是只是懒惰?
这就是乐观锁定的本质。版本控制为您带来一些明显的额外好处。
是否可以只依赖 OptimisticLockException
取决于您的应用程序。如果您在保存可能失败之前执行了很多操作,那么提前检查可能是有意义的,即快速失败(尽管最后仍然会失败)。
在更简单的情况下,您没有理由不等着看是否抛出异常,因为无论如何您都需要处理它。
我想防止以下情况:
- 用户 1 打开一个允许他修改某些数据的网页
- 用户 2 打开一个允许他修改相同数据的网页
- 用户2修改并保存数据
- 用户 1 试图修改并保存数据(需要阻止)
我们目前使用 JPA 乐观锁定,它为我们的实体提供了一个版本号。在我们的业务逻辑中使用该版本属性来防止修改发生是否是一种不好的做法?
额外问题:如果可以使用版本属性,那么只允许发生 OptimisticLockException 以致修改失败是否是一种不好的做法?还是只是懒惰?
这就是乐观锁定的本质。版本控制为您带来一些明显的额外好处。
是否可以只依赖 OptimisticLockException
取决于您的应用程序。如果您在保存可能失败之前执行了很多操作,那么提前检查可能是有意义的,即快速失败(尽管最后仍然会失败)。
在更简单的情况下,您没有理由不等着看是否抛出异常,因为无论如何您都需要处理它。