Spring Data JDBC 中的乐观锁

Posted

技术标签:

【中文标题】Spring Data JDBC 中的乐观锁【英文标题】:Optimistic Locking in Spring Data JDBC 【发布时间】:2019-07-20 14:17:49 【问题描述】:

我注意到 Spring Data JDBC 似乎没有实现乐观锁定(类似于 JPA 的 @Version 注释)。

我正在考虑创建一个@Modifying 查询,该查询考虑版本字段并返回boolean 以手动检查更新是否成功。但恐怕这种方法仅限于简单实体,而不是意味着多个表的聚合。

为聚合实现乐观锁定的最佳方法是什么?

【问题讨论】:

Spring Data JDBC 2.0 版将包含对乐观锁定的支持。 【参考方案1】:

这取决于你的情况。如果您只有 7 个聚合,其中 5 个是单个实体聚合,请为单个聚合选择 @Modifying 解决方案,并为其他 2 个编写自定义方法。

如果您有更多由多个类组成的聚合,请考虑正确实施它并提交 PR。问题已经存在:https://jira.spring.io/projects/DATAJDBC/issues/DATAJDBC-219

主要代码更改将在 SqlGenerator 中,如果它们具有版本属性,则需要为聚合根添加 where 子句。

如果您有兴趣进行 PR 并需要更多帮助,请对该问题发表评论。

【讨论】:

以上是关于Spring Data JDBC 中的乐观锁的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data Jpa如何实现审计和乐观锁功能

JDBC(本质,配置环境变量,JDBC编程六步,类加载注册,sql注入,事务问题,封装工具类,悲观锁,乐观锁)

redis乐观锁和悲观锁在spring boot的使用

redis乐观锁和悲观锁在spring boot的使用

redis乐观锁和悲观锁在spring boot的使用

乐观锁定的重试机制(spring data + JPA)