optimistic-locking相关内容

休眠乐观锁定 Postgres 和 MariaDb 之间的不同行为

我刚刚发现,当我对 Postgresql 或 MariaDB 数据库使用乐观锁定时,我的应用程序的行为会有所不同,我想知道是否有人可以解释发生了什么以及如何使应用程序以与 MariaDB 相同的方式工作?我使用带有 InnoDB 引擎和默认设置的 Postgresl 10.5 和 MariaDB 10.3.10.我使用 Spring 框架版本 5.1.0 和 Hibernate 5.3.6. ..
发布时间:2022-01-15 20:43:21 其他开发

分布式事务和/或集群中共享数据的 Java 解决方案

集群/分发 Java 服务器应用程序的最佳方法是什么?我正在寻找一种方法,让您可以通过添加更多应用服务器和更多数据库服务器来进行水平扩展. 您建议使用哪些技术(软件工程技术或特定技术)来解决此类问题? 您使用什么技术来设计持久层以扩展到许多读者/作者扩展应用事务并扩展对共享数据的访问(最好的方法是消除共享数据;您可以应用哪些技术来消除共享数据). 似乎需要不同的方法,具体取决于您的事务是 ..

具体(Java)示例的乐观锁定

我花了一上午的时间阅读了所有关于 Google 在乐观锁定方面大展身手的热门文章,并且对于我的生活,我还是不太明白. 我理解乐观锁定涉及添加用于跟踪记录“版本"的列,并且该列可以是时间戳、计数器或任何其他版本跟踪构造.但是我仍然不明白这是如何确保 WRITE 完整性的(这意味着如果多个进程同时更新同一个实体,那么该实体之后会正确反映它应该处于的真实状态). 有人可以提供一个具体的、易于 ..
发布时间:2021-12-28 22:53:28 Java开发

Spring MVC:验证、重定向后获取、部分更新、乐观并发、字段安全

[这是我看到的有关 Spring MVC 的常见问题列表,它们以类似的方式解决.我已经把它们贴在这里,所以我可以很容易地从其他问题中参考它们] 如何只更新带有表单的模型实体的几个字段? 我如何在 Spring MVC 中使用 Post-Redirect-Get 模式,尤其是表单验证? 如何保护实体中的某些字段? 如何实现乐观并发控制? 解决方案 要部分更新实体, ..

乐观与悲观锁定

我理解乐观锁和悲观锁的区别.现在有人可以向我解释一下我一般什么时候会使用任何一种吗? 这个问题的答案是否会根据我是否使用存储过程来执行查询而改变? 但只是为了检查,乐观的意思是“读时不锁表",悲观的意思是“读时锁表". 解决方案 Optimistic Locking 是一个读取记录的策略,记下版本号(其他方法包括日期、时间戳或校验和/哈希),并在写回记录之前检查版本是否未更改. ..

Spring Optimistic Locking:如何重试事务方法直到提交成功

我将 Spring 2.5 和 Hibernate JPA 实现与 Java 和“容器"托管事务一起使用. 我有一个“用户提交后"方法,它在后台更新数据,无论 ConcurrencyFailureException 还是 StaleObjectStateException 异常都需要提交,因为它永远不会显示客户.换句话说,需要使乐观锁定到悲观.(如果方法执行需要更长的时间并且有人更改了其他事 ..
发布时间:2021-11-29 09:21:06 Java开发

Restful App异步调用乐观锁后拦截@Transactional

我今天的问题是在@Transactional注解导致乐观锁异常(OLE)并回滚事务后如何重试方法. 我对 Restful 应用程序进行了异步调用,该应用程序尝试根据某些业务逻辑更新数据库对象.如果我得到一个 OLE,我想在 0.2-0.5 秒的延迟后重试该事务. @Transactional(rollbackFor = Throwable.class,propagation = Propa ..
发布时间:2021-09-09 19:10:42 Java开发

Hibernate乐观地锁定Postgres和MariaDb之间的不同行为

我刚刚发现,当我对Postgresql或MariaDB数据库使用开放式锁定时,我的应用程序的行为会有所不同,我想知道是否有人可以解释会发生什么情况,以及如何使该应用程序与MariaDB一样工作?我将Postgresl 10.5和MariaDB 10.3.10与InnoDB引擎和默认设置一起使用.我使用的是Spring框架版本5.1.0和Hibernate 5.3.6. 所以我的代码如下: ..
发布时间:2021-05-20 19:16:25 其他开发

使用JPA/Hibernate在无状态应用程序中进行乐观锁定

我想知道在无法在请求之间保留具有特定版本的实体实例的系统中,实现乐观锁定(乐观并发控制)的最佳方法是什么.这实际上是一个非常普遍的场景,但是几乎所有示例都是基于在请求之间(在http会话中)保存已加载实体的应用程序. 如何在尽可能少的API污染的情况下实现乐观锁定? 约束 该系统是根据域驱动设计原则开发的. 客户端/服务器系统 不能在请求之间保留实体实例(出于可用性和可伸缩性 ..

乐观锁定批处理更新

如何在批量更新中使用乐观锁定?我正在使用SimpleJdbcTemplate,对于单行,我可以构建更新sql,以增加版本列的值,并在WHERE子句中包含版本. 不幸的是,使用Oracle驱动程序时,结果int[] updated = simpleJdbcTemplate.batchUpdate不包含行数.所有元素均为-2,表示未知的行数. 除了单独执行所有更新之外,还有其他更高效的方法 ..
发布时间:2021-02-11 19:27:43 Java开发

Java 8 Stamped Lock:为什么这段代码不会导致死锁?

在尝试理解Java 8中的乐观锁时,我遇到了以下代码. 此处的原始博客 如博客中所述,这段代码试图将读取锁转换为写入锁.如果将读取锁转换为写入锁失败,则代码会请求显式写入锁. 这使我感到困惑当父线程已经持有读取锁时,如何期望授予显式写入锁?看起来读取锁似乎并没有被释放强制请求写锁定之前的时间点.以我的错误理解,线程将无限期地等待写锁,因为从不释放读锁而导致死锁. 为什么这不会导致 ..

Hibernate的@Version可以考虑相关实体的更改吗?

我有2个实体:一对多关系中的Parent和Child. Parent是版本控制的,即具有@Version字段.我的目标是同步对Parent版本的Parent和Child实体的更改. 例如一个线程更新Parent,另一个线程更新它的Child,这将导致OptimisticLockException. 有可能吗? 我尝试在Child上添加@PreUpdate,这会增加它的Parent ..
发布时间:2020-11-23 02:51:57 其他开发

锁定机制(悲观/乐观)与数据库事务隔离级别有何关系?

我正在编写一个Web应用程序,其中两个不同的用户可以更新事物列表,例如执行任务列表。我已经意识到,乐观锁定机制最有效,因为我不希望出现激烈争用。 我一直在查看事务隔离级别,现在有点困惑了。看起来不同的事务隔离级别也可以解决类似的问题。 这两个不同的概念如何相互关联? 解决方案 这两个都与数据一致性和并发访问有关,但是它们是两个 锁定可防止并发访问。例如,当您尝试更新待办事 ..

Spring MVC:验证,重定向后获取,部分更新,乐观并发,字段安全

[这是我看到的有关Spring MVC的常见问题列表,可以通过类似的方式解决.我已经在这里发布了它们,因此我可以轻松地从其他问题中引用它们] 如何仅使用表单更新模型实体的几个字段? 如何在Spring MVC中使用后重定向-获取模式,尤其是表单验证吗? 如何保护实体中的某些字段? 如何实现乐观并发控制? 解决方案 要部分更新实体,应使用@SessionAttri ..

保存操作期间的Dynamo DB乐观锁定行为

方案:我们有一个Dynamo DB表,该表支持带有版本号的乐观锁定。两个并发线程正在尝试将具有相同主键值的两个不同条目保存到该表中。 问题:是否为后者的保存操作抛出ConditionalCheckFailedException? 解决方案 是,第二个尝试插入相同数据的线程将抛出 ConditionalCheckFailedException 。 com.amazonaws.s ..