问题很简单,同时也很难

关于购物车
当用户向购物车添加一个物品后,
1)立即访问数据库,把物品数量减1(假设用户买了一个),当在最后结帐时,假如用户放弃购买,就再从数据库把物品数量加1。
2)把这个数量(1)保存在session中,在jsp页面显示的物品数量减1,到最后用户结帐时再访问数据库把物品真实数量减1

以上是我的一点“谬论”,我觉得1)在技术上简单一点,但数访问数据库频繁,可能性能低一点;2)在技术和性能方面刚好和第一点相反。


我是这样做的:
1 当用户向购物车内add一个物品时,访问数据库并将物品数量减1
2 当用户从购物车内Remove物品时,访问数据库并将物品数量加1
3 在最后的Cancel按钮又操作访问数据库

这样频繁访问数据库是不是性能会低很多。
我原本想在session中操作,等到最后只访问一次数据库,但是那样的话好像有点麻烦。

请做过购物车的朋友们多多指教

>原本想在session中操作,等到最后只访问一次数据库,但是那样的话好像有点麻烦。

这是典型的有状态应用,不建议操作数据库,只有用户确认订单才从数据库中减去,可参见Jdon Framework应用JPetstore

其中有状态CartService是实现了Stateful接口。有一个购物车类字段。

建h去看JB的sample Y面有镘的芍F,基於pojo和EJB,很雅!