gpt4 book ai didi

java - Hibernate数据一致性

转载 作者:行者123 更新时间:2023-12-01 15:20:40 25 4
gpt4 key购买 nike

我有java-servlet应用程序+hibernate+流媒体服务器

流程:

  1. 用户登录开始视频流
  2. 每 2 秒减少数据库中的 abonament 分钟
  3. 如果分钟 < 0 发送新分钟的请求(响应可能会在时间较长,如果是则继续递减)

问题:

出现数据一致性问题,即在减少分钟数的同时,例如:user.setMinutes(user.getMinutes() - 2) 可能看不到新分钟响应所做的更改,并且分钟将被损坏

我认为解决方案可以创建新的 hibernate 事务并在每次更改分钟时提交它,但这不起作用:

Transaction t = session.beginTransaction();
user.setMinutes()
session.flush();
t.commit();

问题:

当每次更改都获取最新数据时如何解决这个问题?

最佳答案

Hibernate session 将您的实体缓存在内存中(在您的情况下是 User 实体)。创建新事务来更改剩余分钟数是不够的,您还必须重新加载其他任务所做的更改(额外分钟数请求)。您可以通过调用 refresh() 来实现此目的:

session.refresh(user);
user.setMinutes(user.getMinutes() - 2);
session.flush();

关于java - Hibernate数据一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10967556/

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