面向对象编程如何保持业务完整性?

在Jdon向各位前辈学习有一段时间了,自己也思考了一些问题,有个地方想不通,特来赐教。
大家都知道在面向对象编程的过程中,将对象拆分成各个字段存放在数据库中是一种不正确的做法,比较正确的是使用缓存机制,将常用对象实例化后放入缓存,保持在对象生命周期内的快速访问和对象的完整性,问题来了,现在有个购物系统,顾客和商品对象放在缓存区中,顾客花掉自己账户的money买商品,这涉及到用户账户和商品数量的同时变动,如何保证这一过程的业务完整性,用数据库做存储的时候可以用数据库事务控制,放在缓存中有所谓的对象事务吗?我没找到这方面的资料,我暂时的想法是可以让缓存中的对象立即回写到数据库中,用数据库事务控制住,但是有没有更好的办法呢?

锁或者内存事务。后者较为复杂,没有现成的API的话,对于高一致性应用,还是用回数据库。

2011年07月29日 17:24 "@SpeedVan"的内容
顾客和商品对象放在缓存区中,顾客花掉自己账户的money买商品,这涉及到用户账户和商品数量的同时变动,如何保证这一过程的业务完整性,用数据库做存储的时候可以用数据库事务控制 ...

小系统时你可以这么做,大系统时,如果用户帐号和商品是两个独立子系统,那么这种事务可以通过JMS分布式事务实现,或者通过SOA的EBUS消息总线实现,看看开源Mule的案例,专门针对你这个案例的。

小系统时,因为用户帐号和商品资料都可以在缓存内存中,用语言锁机制即可,非常简单直接。但这样问题和用数据库存储一样,买商品 用户帐号和商品资料这三个本应该独立的领域会被耦合到一个事务中,将来发展到大系统时,分离就很难,也就是可伸缩性不好。


[该贴被banq于2011-07-29 21:11修改过]

多谢各位,我以前以为这些只是思想,不能作为真正的程序实现的。
[该贴被jerrycool于2011-08-11 17:31修改过]