哪种设计比较好,或者有什么更好的设计

第一种:

@Transactional
public String submit(){
    1//检查参数合法性
    2//进入一个同步方法,修改库存modifyStock()
    3//插入两条记录信息数据
}
public String modifyStock(){
    lock.lock()
     try {
          修改库存   
     } catch (Exception e) {
                    
     }finally{
     lock().unlock();
     }
    
}

第二种:

@Transactional
public String submit(){
    1//检查参数合法性
    2//调用修改库存方法modifyStock()
    3//插入两条记录信息数据
}
@Transactional(isolation=Isolation.SERIALIZABLE)
public String modifyStock(){
    修改库存
}

我第二种对事务的配置感觉有点问题,希望大神修正一下。并给出哪个方案比较好,或者有什么更好的方案

阅读 2.2k
2 个回答

修改个库存数量就加Isolation.SERIALIZABLE,没必要吧。没见过哪个项目这样弄的。第二种方案不行。
第一个方案为什么要加内存锁?解决什么问题?分布式怎么办?
正常加事务扣减就行,怕并发也是加数据库的乐观/悲观锁。

第一种是在运行时环境也就是内存级别加锁,第二种是在事务层面也就是数据库层面加锁。

我感觉第二种好一点,因为第一种如果用多机就不行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题