关于涉及较大数据量时的对象实例化问题

07-03-06 huochaihe
举例:某公司有若干子公司,该公司管理人员需要统计出每个子公司的养老保险报表。设计如下:查询出该公司的所有子公司,每个子公司查询出所有员工,每个员工查询出他的当月缴费基数,最后统计出该子公司的缴费金额。

若员工数量较多,比如3万,是不是在代码时要生成3万个员工类,若每个员工有多个月的缴费基数是不是需实例化更多的缴费基数的类?类的实例化成本是不是很高?

面向对象的教材一般都采用很简单或涉及很少数据量的例子来讲,并且都避开从数据库中查询并实例化对象这方面的内容,我正在从过程向对象转,在这方面很疑惑。

以前,俺用一个联合查询语句就搞定了……

请各位老师都说两句,别打击一个决心OOAD的人!!!!

              

Coolyu0916
2007-03-06 12:24
呵呵,这是肯定不需要di

如果像你这么设计,那么银行、电信要什么做主机那??这要是统计一个月的总话费,或者存款余粮,估计就要死翘了。

persion.calcAccumulationFund()方法是计算每个人公积金,那么company.calcAccumulationFund()就一定是persion的累加么??

而且从现实的角度想,你统计公司的公积金总数跟张三、李四有关系么,需要先确定张三、李四才能得到结论么,如果张三走了来了王五,两者有什么区别那??而且使用你company.calcAccumulationFund()的人会关心你的是每个人累加出来的还是计算出来的么??

banq
2007-03-06 12:36
>每个员工查询出他的当月缴费基数,最后统计出该子公司的缴费金额。

>若员工数量较多,比如3万,是不是在代码时要生成3万个员工类

当然需要避免这种情况,计算查询时可以使用SQL作为规则来实现,对象化不是简单的数据对象化。可以结合SQL语句,但是不要让数据库来影响业务层。具体可见jivejdon3的查询代码。

huochaihe
2007-03-06 16:31
是这样的每个人有一个帐户,帐户中有此人的缴费基数明细,缴费基数明细是以月为单位的,如2007年10月1000元。所以公司的总额是由员工缴费基数累计的。我不想引入公司和缴费基数明细的关联,所以才有此疑惑。

Coolyu0916
2007-03-06 19:40
如果company里面没有需要对具体人进行操作的,可以基本不需要跟persion发生干练的。

猜你喜欢
2Go 1 2 下一页