补充一下:我前面讲到"我建议还是用对象逐个计算,将负载拉到对象运行的应用服务器中",这点其实使用Hibernate3很容易实现:
Hibernate的batch fetching策略就是为这个目的来的:
Person 有櫴加载cats集合,如果100个Persons对象被加载到session,遍历这100个时,Hibernate产生100次select SQL语句,实际就是将负载加到数据库服务器上,那么如何将负载转移到Hibernate运行所在的应用服务器上呢?
使用以下设置
<class name="Person"> <set name="cats" batch-size="30"> ... </set> </class>
Hibernate遍历Person时,将预先首先获取batch-size大小Cats, 将实现4次select: 30 30 30 10,这样就减少了SQL语句,从而减少数据库服务器冲击,充分利用应用服务器的大内存和CPU进行遍历逐个计算广告的价格。
相关文章:
我为什么喜欢DDD ?
DDD能够更直接更快反映需求,肯定比关系数据库直接自然啊,就象向心仪的女孩表白爱就要明白无误,让对方直接明白,而不是使用数据库语言拐弯说话,这样女孩大概只有先去学数据库才能明白你的意思?在这样谁快谁慢竞争中,你肯定失去你的女孩。
http://www.jdon.com/jivejdon/thread/34240.html
[该贴被banq于2008-06-19 20:33修改过]