- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序:
void deleteObj(id){
MyObj obj = getObjById(id);
if (obj == null) {
throw new CustomException("doesn't exists");
}
em.remove(obj);//em is a javax.persistence.EntityManager
}
我还没有明确配置 optimistic locking带有版本字段。但是,如果两个请求并行运行,试图删除同一个对象,那么我有时会得到一个 HibernateOptimisticLockingFailureException,有时会得到“CustomException”。
在没有显式设置乐观锁的情况下获取 HibernateOptimisticLockingFailureException 是否正常?是否为分离对象 hibernate 默认的乐观锁定?
你正在做什么来处理这个 HibernateOptimisticLockingFailureException ?重试或使用“服务器繁忙”等默认消息通知用户?
最佳答案
首先,HibernateOptimisticLockingFailureException
是Spring持久化异常翻译机制的结果。它被抛出以响应 StaleStateException
,其 javadoc 说:
Thrown when a version number or timestamp check failed, indicating that the Session contained stale data (when using long transactions with versioning). Also occurs if we try delete or update a row that does not exist.
从常识上看,乐观锁异常发生在数据修改语句返回意外数量的受影响行时。这可能是由于版本值不匹配以及根本不存在该行引起的。
要确保该实体确实被删除,您可以尝试在删除后立即通过 em.flush()
刷新上下文并捕获它抛出的异常(注意它应该是 PersistenceException
以 StaleStateException
为原因)。
关于java - 是否 hibernate 分离对象的默认乐观锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4619709/
我正在编写一个 Web 应用程序,两个不同的用户可以在其中更新事物列表,例如待办事项列表。我已经意识到,乐观锁定机制效果最好,因为我不希望出现高争用情况。 我一直在查看事务隔离级别,现在我有点困惑。看
这个问题在这里已经有了答案: Pessimistic versus Optimistic Concurrency (Locking versus Feedback) (3 个答案) 关闭 8 年前。
我是一名优秀的程序员,十分优秀!