gpt4 book ai didi

java - 管理数据库中的产品数量

转载 作者:太空狗 更新时间:2023-10-29 22:34:48 25 4
gpt4 key购买 nike

对不起,这个问题可能看起来很幼稚,但我遇到过一个场景,我需要在电子商务商店的数据库中管理产品数量。

有一个带有整数变量 productCount 的 Product 类,它表示数据库中网站用户可见的可用产品的数量。现在这个类被多个线程访问,或者可以说是电子商务站点的多个用户。每个人都在向他的购物车中添加或删除产品。

正在使用的ORM框架是hibernate

示例代码

@Entity
@Table
class Product{
@Column
private int productCount;

public void addProductToCart(){
// decrements the product count by 1 & updates the database
}

public void removeTheProductFromTheCart(){
// increments the product count by 1 & updates the database
}

从代码中可以清楚地看出,我需要对数据库中的产品计数进行并发检查,以防止丢失更新。

此外,如果多个用户试图在数据库中只添加一个左产品。应该将产品添加到哪个用户的购物车?

我对此做了一些研究

我发现的可能方法是

  1. 为 Product 创建单例类。这将确保在整个应用程序中只有一个产品实例可用。

  2. 同步 addProductToCartremoveTheProductFromTheCart 方法。这将只允许一个线程更新产品计数并一次更新数据库。

  3. 使用数据库并发控制应用一些数据库事务隔离级别,productCount 的乐观/悲观锁定。我正在使用 mysql,默认隔离级别是 REPEATABLE_READ

处理此问题的最佳方法是什么?

最佳答案

<强>3。使用数据库并发控制

为什么?

  • 如果您的电子商务应用绝对是修改产品数量的唯一方式,那么 1 和 2 都可以。这是一个很大的假设。在开展业务和维护库存的过程中,商店可能需要其他方式来更新产品数量,而电子商务应用程序可能不是理想的解决方案。另一方面,数据库通常更容易连接到有助于商店库存流程的不同应用程序。

  • 数据库产品通常有很多故障安全机制,因此如果出现问题,您可以跟踪哪些事务成功,哪些事务失败,并且您可以回滚到特定时间点。漂浮在内存中的 java 程序没有开箱即用,如果你做了 1 或 2,你将不得不自己开发它。Spring 和 Hibernate 以及其他类似的东西当然比没有好,但比较它们提供的东西和什么数据库提供从某些电子灾难中恢复的条件。

关于java - 管理数据库中的产品数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465008/

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