第一种:
@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(){
修改库存
}
我第二种对事务的配置感觉有点问题,希望大神修正一下。并给出哪个方案比较好,或者有什么更好的方案
修改个库存数量就加Isolation.SERIALIZABLE,没必要吧。没见过哪个项目这样弄的。第二种方案不行。
第一个方案为什么要加内存锁?解决什么问题?分布式怎么办?
正常加事务扣减就行,怕并发也是加数据库的乐观/悲观锁。