Hibernate 中的表级锁

2023-12-20

我使用 Hibernate 版本 4。我们在批处理过程中遇到问题。我们的系统工作原理如下

  1. 选择处于“PENDING”状态的记录集
  2. 立即更新为“IN PROGRESS”状态
  3. 处理它并更新到“COMPLETED”状态

当我们有两台服务器并同时执行时,我们担心会出现并发问题。所以我们想在前两个步骤中实现DB Lock。我们用了query.setLockOptions(),但似乎不起作用。是否还有其他具有表级锁或行级锁,直到完成选择和更新。两者都在同一会话中。

我们在 JDBC 中有一些选项LOCK TABLE <TABLE_NAME> WRITE。但是我们如何在hibernate中实现或者是否可以在hibernate中实现select..for update?


Hibernate 通过以下方式支持“选择...进行更新”锁定模式.升级 http://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/LockMode.html#UPGRADE您可以将其设置为,例如命名查询 http://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/jpamodelgen/xml/jaxb/NamedQuery.html#setLockMode%28org.hibernate.jpamodelgen.xml.jaxb.LockModeType%29.

但是使用应用程序/手动表行锁定有几个缺点(特别是当数据库连接在事务中途中断时),并且您的更新过程可以不使用它:

  • 开始交易。
  • 更新表设置 state='PENDING', server_id=1 where state='IN PROGRESS';
  • 提交交易
  • 从表中选择,其中 state='PENDING' 且 server_id=1;
  • 【流程记录】

每个服务器都必须有一个唯一的编号才能工作,但它不太容易出错,并且您可以让 DBMS 做它应该擅长的事情:隔离(请参阅ACID http://en.wikipedia.org/wiki/ACID).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 中的表级锁 的相关文章

随机推荐

  • 3D 计算机图形学中的插值

    我想知道是否有人可以帮助用简单的术语解释什么是插值以及它如何在 3D 计算机图形学中使用 简单地说 给定两个点A和B 找到它们之间的点 例如 如果我想沿着一条线一步将某物从位置 x 1 移动到 x 4 1 4 第一步位于位置 1 第二步位于
  • 错误: invalid_grant ,用于使用刷新令牌获取访问令牌

    经过谷歌搜索后 我们发现 invalid grant 意味着刷新令牌无效 链接到 google oauth 文档 https developers google com identity protocols oauth2 expiratio
  • 如何向 webapi 询问特定的内容类型

    据我从 ASP net MVC 4 发行说明中了解到 它具有内容协商 并且它将返回客户端请求的内容类型 客户如何要求特定内容 在我的例子中 flash 会使用 AMF 请求 XML 就像vansimke所说 你只需设置你需要的内容类型 在
  • 动态选择选项依赖于 laravel 中的另一个选择选项

    我有两个表作为用户和部门 我的部门表有两列作为 id 和 title 我的用户表包含用户信息列和一列作为 dept id 与部门表 id 相关 我想为部门创建一个下拉选择选项 当选择一个部门时 具有相关部门 ID 的用户应显示到另一个下拉列
  • 设计:用户属于组织

    我正在使用设备进行身份验证 在 注册 页面上 我有一个 组织 文本字段 因此当用户注册时 他们将创建一个组织 并且我希望用户与该组织关联 用户模型有Organization id 属性 我已经创建了设计视图 并添加了 fields for
  • 过滤 pytest 夹具

    这基本上与老问题 https stackoverflow com questions 47696002 chaining pytest fixtures但希望现在有更好的解决方案 问题 给定一个参数化夹具 如何使用夹具对象的子集参数化测试函
  • 类指针向量上的 std::sort()

    我有一个类指针向量std vector
  • Python 2.6.1:预期路径分隔符([)

    我在 python 2 6 1 中收到路径分隔符错误 我在 python 2 7 2 版本中没有发现这个问题 但不幸的是我只在 2 6 1 版本中需要这个 还有其他方法可以达到同样的效果吗 我的代码 import xml etree Ele
  • adb pull -> 未找到设备

    我有一个 root 的手机并在 root 模式下运行 adb 我使用adb shell成功访问手机 我可以浏览目录 甚至是那些需要 root 的目录 当我尝试使用时 adb pull data data my app path databa
  • ValidationRule 中的 wpf 绑定属性

    我有一个带有 2 个文本框的表单 总登录数文本框 上传登录文本框 我想限制 UploadsLoginsTextBox 因此文本的最大输入将是 TotalLoginsTextBox 的值 我还使用值转换器 因此我尝试限制最大值 这是 XAML
  • 当视图属性未设置时,loadView 被多次调用?

    我刚刚遇到了一些我以前没有见过的东西 我想我应该在这里询问以验证原因 我有一个 UIController 其视图是以编程方式定义的 今天我注意到 当我从其 loadView 中注释代码 以测试其他内容 时 loadView 和 viewDi
  • 在 Nuxt 前端使用 Strapi 上传的图像

    下面是我从 Strapi 公开的 API 数据 http myjson com 1fgx71 http myjson com 1fgx71 我有一个专栏post content这是一个降价 我已经使用所见即所得编辑器上传了图像 现在上传的图
  • 如何使用 smtp 发送 html 电子邮件内嵌的plot.ly 图像?

    我正在自动化一些双周报告 因此我决定使用plot ly 创建线图 该线图具有不同数量的迹线 具体取决于正在运行的报告 我已经能够成功创建绘图 但我发现的所有方法都无法在我的电子邮件中显示内联绘图 这是我的代码 SMTP SERVER smt
  • 我的解析表视图搜索效率低下吗(swift / Objective C)?

    所以我的解析服务器中有一堆字段 我的 iOS 应用程序中有一个表格视图 正如我之前所说 每个单元格都有一堆数据 但问题是我想让用户能够搜索该数据 我的问题是 如果我有 50 000 个 pfobjects 列表和我的解析服务器 并且用户正在
  • Heroku 未被识别为内部或外部命令 (Windows)

    下列的this https devcenter heroku com articles getting started with python deploy the app在heroku 上启动应用程序的heroku 教程 但是当我使用命令
  • Oracle VARCHAR 列上的数字比较如何工作?

    我有一个表 其中两列的类型为 VARCHAR2 3 BYTE 和 VARCHAR2 32 BYTE 当我执行选择查询时 where col1 10 and where col1 10 or where col2 70001 or col2
  • 如何验证传入的 JSON 并检查缺失的属性? [杰克逊,泽西岛]

    我正在使用杰克逊 2 7 0 以及最新的 Jersey for JSON on REST API 用于处理与 Hibernate 5 的数据库通信 我不知道如何验证传入的 JSON 如果其中缺少任何属性 如果原始类型为空 则无法对它们执行检
  • 由于缓存委托,C# 编译器的奇怪行为

    假设我有以下程序 static void SomeMethod Func
  • Dimple JS 添加垂直线

    我试图在酒窝中画一条垂直线 我看过这个帖子 如何画一条带有凹痕的垂直线 https stackoverflow com questions 26358059 how to draw a vertical line with dimple 但
  • Hibernate 中的表级锁

    我使用 Hibernate 版本 4 我们在批处理过程中遇到问题 我们的系统工作原理如下 选择处于 PENDING 状态的记录集 立即更新为 IN PROGRESS 状态 处理它并更新到 COMPLETED 状态 当我们有两台服务器并同时执