问题标签 [optimistic-locking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
509 浏览

sql-server-2008 - 数据库中每个客户端的表

我们开发的服务是为每个客户用户都可以预约的。是否有策略 - 每个客户端的数据库表(MS SQL SERVER)是否合适?

我们认为这种策略简化并排除了复杂的表锁定。

0 投票
1 回答
142 浏览

hibernate - 休眠和“最大价值获胜”逻辑

我的数据库中有一个 high_scores 表,它有两个值:

我需要一个存储新高分的存储库方法。对于如此简单的事情,我真的不想用乐观锁重试逻辑弄脏我的代码。我想要执行的基本上是这一行:

这基本上可以很好地实现我的目标,尽管如果用户没有高分,我也不得不担心创建一个高分。我需要确保我永远不会用较低的分数覆盖高分,但这是该表需要的唯一锁定方式。

有没有办法让hibernate做这样的事情,或者我需要求助于自定义SQL?

0 投票
0 回答
272 浏览

ruby-on-rails - 我可以使用对象的乐观锁定来保护它的关联吗?

我们在 Rails 应用程序中遇到了竞争条件问题。在我解释之前,这里有一些(简化的)代码:

正在发生的事情是create_or_update_sending_message从两个进程中调用的。两者都将消息集合视为空,因此都创建了一条新消息。然后第三个进程加载问题,修改它,尝试保存它,我们在一个不是实际问题发生的地方抛出一个错误。

如果我们从头开始设计,我可以想出一些方法来避免这种情况,但不幸create_or_update_sending_message的是,遗留代码太深而无法实用。

我们为问题模型启用了乐观锁定。它没有帮助,因为问题没有被保存 - 只有它的消息被保存。

有没有办法在问题上使用乐观锁定来防止保存消息的创建?所以它看起来像

从数据库的角度来看,这是否有意义?

0 投票
2 回答
582 浏览

hibernate - 使用@Version 列不允许@ManyToOne 关系属性作为参考

我正在使用休眠 3.6.3.Final。我有两个关系实体 A 和 B,其单向 ManyToOne 定义为:

现在假设我在 db 中已经有一个 pk id = 1 的 B 实例,然后执行以下操作:

引发著名的“TransientObjectException:对象引用了未保存的瞬态...”异常。令人惊讶的是,如果@Version @Column 被删除或设为@Transient,上面的代码将完全正常工作。知道为什么我要观察这种行为吗?

0 投票
1 回答
5893 浏览

hibernate - 何时明确排除乐观锁定(休眠)?

在什么情况下通过 Hibernate 从 @OneToMany 关系中明确排除乐观锁定是合适的?

我一直在阅读有关 Hibernate 的帖子,其中基本上说对子实体的任何更新都会导致对父实体的乐观锁定,这通常是不需要的。这里的关键词通常是......谁能更准确地解释你何时需要或不需要乐观锁定这样的关系?

以下是演示乐观锁排除的代码示例:

0 投票
2 回答
833 浏览

nhibernate - 是否有替代 ISession.Merge() 在使用乐观锁定时不会抛出的替代方法?

我一直在尝试使用 ISession.Merge() 来保持两个会话之间的一致性,但是当合并的实例具有比会话中加载的版本更高的版本属性时(带有 StaleObjectStateException),它会失败。

当版本字段不匹配时,是否有替代方法可以使用?

0 投票
2 回答
18404 浏览

java - 如何在休眠中进行乐观锁定

我对 Hibernate 和 Spring 完全陌生,并且在尝试学习 Spring、Hibernate、Maven 等时,我只知道如何使用这三者运行一个 hello world 示例。根据我的基本理解,我被分配了执行乐观锁定的任务。据我用谷歌搜索,我只能看到这并不是很困难,我需要的只是在我的映射类中添加一个版本标记和整数变量版本在我的 xml 中。像这样......

我的xml应该是这样的

当第二个用户保存时,hibernate 会自动处理版本控制,hibernate 发现这个用户正在处理过时的数据并抛出 StaleObjectException。

只是想确认我的理解,提前谢谢。

如果有人可以为此指出一个 hello world 示例,那将非常有帮助。

我还想提一下,我正在尝试实现“最后一次提交获胜”场景

0 投票
3 回答
2018 浏览

hibernate - Hibernate Optimistic Locking 版本溢出

我正在使用休眠,并且为休眠锁定目的提供了一个版本列。问题是应用程序会经常更新条目,以至于int版本列达到了 Java 的限制。有可能int也达到了 MySQL 的限制。

一旦达到任何限制(Java 或 MySQL),有没有办法让版本回滚到零?

当然,我可以将数据类型放大为长。但这只是在推迟不可避免的事情。

编辑:我搜索了一下,发现了这个注释:@OptimisticLock(excluded=true)。链接:http ://bit.ly/nczCx1好像理论上可以工作,但是我没有成功使用。有谁知道如何正确使用这个注释?

0 投票
0 回答
233 浏览

hibernate - 休眠 OptimisticLocking 不起作用

我正在使用 Hibernate 3.6.6 和 Sping 3.0.4 添加后

到我的 bean 并运行以下测试用例

Hibernate 不要在更新语句中添加适当的 WHERE 子句

但是在另一个应用程序中,我只使用没有 Spring 的 Hibernate,相同的设置工作得很好。

0 投票
1 回答
940 浏览

hibernate - Hibernate:我是否应该在 hashcode() 和 equals() 方法中包含“版本”字段

我知道在覆盖我的持久实体时hashcode()equals()我不应该包含 ID,而只包含唯一标识对象的有意义的属性。但是Hibernateversion用于乐观并发控制的字段呢?我是否也应该跳过它,就像 ID 一样?如果让我们说new User(name='John', version=1).equals(new User(name='John',version=2)),无论如何它不会混淆Hibernate OCC吗?