请原谅,这个问题可能看起来很天真,但我遇到了一个场景,我需要管理Electron 商务store 数据库中的产品数量.
有一个具有整数变量productCount
的Product类,它表示数据库中对站点用户可见的可用产品的数量.现在,这个类被Electron 商务站点的几个线程或几个用户访问.每个人都在将产品添加或移除到自己的购物车中.
正在使用的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
}
从代码中可以清楚地看到,我需要对数据库中的产品计数进行并发判断,以防止更新丢失.
此外,如果多个用户试图在数据库中只添加一个剩余产品.产品应该添加到哪个用户的购物车?
我对此做了一点研究
我找到的可能方法是
为Product创建一个Singleton类.这将确保在整个应用程序中只有一个产品实例可用.
同步的
addProductToCart
&removeTheProductFromTheCart
种方法. 这将一次只允许一个线程更新产品计数和更新数据库.使用数据库并发控制应用一些数据库事务隔离级别,乐观/悲观锁定为
productCount
.我使用的是MySQL,默认隔离级别是REPEATABLE_READ
.
处理这个问题的最佳方法是什么?