当前位置: 首页 > 知识库问答 >
问题:

如何避免JPA和Hibernate在产品销售中的竞争

云昊阳
2023-03-14

我正在使用Java Spring框架和Hibernate。我正在做一个电子商务web应用程序,其中公共用户可以从web应用程序购买产品。每个产品都有一个数量计数。

问题

1)我想确认这个关于悲观锁定的答案有助于解决我的问题。

2)我的工作流程正常吗?有没有更好的方法?

共有1个答案

阙阳夏
2023-03-14

您还可以使用乐观锁定并防止可能丢失的更新。

使用乐观锁定,如果两个用户用一个堆栈加载了同一个实体,而一个用户刚刚购买并减少了计数器,那么第二个用户将无法更新产品实体,因为他的产品版本与数据库中找到的产品版本不匹配(第一个用户增加了该版本)。

除了任何例外(StaleStateException)外,当前事务将回滚,并且不会对数据库应用任何更改(例如针对零数量产品添加OrderLine)。

乐观锁定方法比悲观锁定更适合扩展,它也适用于多请求逻辑事务。

 类似资料:
  • 问题内容: 我正在开发的应用程序中存在潜在的竞争状况,我想在查询中考虑和避免这种情况。 总结应用程序流程… 在表中创建一个新行: 通过查看对时间敏感的表格,找出Bar先生是否是获胜者: 如果他是赢家,请相应地更新他的条目行: 由于每个奖项只能颁发一次,因此我需要消除比赛条件的任何可能性,在这种情况下,另一个过程可以查询奖项表并更新上述步骤2和3之间的条目表。 我一直在做一些研究,发现了大量关于事务

  • 重新创建此问题的步骤: 创建可变产品 我正在使用Woocommerce v2。6.14和Wordpress v4。7.6. 如果我尝试检查

  • 刷新页面后,我无法注销。我认为问题在于获取当前用户的方法或检查用户管理的方法。 管理员授权守卫。服务ts } 使用者服务ts 登录名。组成部分ts 使用者模型ts

  • 问题内容: 我有一个“月度状态”数据库视图,我需要根据此视图生成报告。视图中的数据如下所示: …等等 该视图具有产品类别,收入,一年零一个月。我想创建一个比较2007年和2008年的报告,在没有销售的月份中显示0。因此,报告应如下所示: 要注意的关键是,第1个月在2008年仅有销售,因此2007年为0。此外,第4个月在2008年没有销售,因此0则在2007年有销售并且仍然显示。 另外,该报告实际上

  • 我有大约10个产品和接近200个变体每一个。我需要更新特定产品的销售价格,包括它的所有变化。 问题是: 所有的变种都有不同的价格。未输入销售价格-所有销售价格输入框均为空。 我需要一个SQL解决方案运行和更新所有特定产品的销售价格,采取常规价格并从中扣除350,或 任何其他方式,我不知道在这个阶段,因为我已经尝试了许多解决方案,包括Woocommerce内置的解决方案“设置销售价格”,再次不工作,

  • 在任何情况下,我不想重复计数的每一个页面我需要,这个信息是需要的只是第一次调用。