gpt4 book ai didi

orm - JPA 同步实体访问器

转载 作者:行者123 更新时间:2023-12-04 16:46:53 24 4
gpt4 key购买 nike

这是设置:实体类具有延迟加载的其他实体的集合。诀窍是,我需要执行一些与数据相关的工作(例如,我想用集合的元素计算某些校验和)。

这里的诀窍是我想不惜一切代价避免竞争条件,例如:“有人在我进行数据计算时更新了实体”。在正常情况下,我会声明 getter/setter 同步并且会很高兴。但据我所知,如果另一个线程决定从数据库更新实体状态,而我正在计算校验和,它将完全忽略“同步”方法(它将直接访问该字段)。

我可能错了。所以问题是:在初始校验和计算时,是否有任何方法可以“锁定”对实体的一部分或整个实体本身的访问?

提前致谢!附言如果您需要代码片段来说明问题 - 请告诉我。到目前为止,我认为问题已经很清楚了。

最佳答案

I might be wrong tough. So the question is: is there any way to "lock" the access to the part of the entity or to the whole entity itself for the time of initial checksum calculations?

JPA 2.0 支持 pessimistic concurrency并且您可以读取一个实体并在数据库级别锁定相应的行(请注意,提到的链接早于 JPA 2.0 规范的最终版本并且不反射(reflect) LockMode 枚举的所有可能值,但你明白了)。

如果您使用的是 JPA 1.0,恐怕您将不得不使用 native SQL 来执行等效的 SELECT ... FOR UPDATE

引用资料

  • JPA 2.0 规范
    • 第 3.4.4 节“锁定模式”

关于orm - JPA 同步实体访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com