hibernate取10000以上的数据的问题。

07-11-09 eyeqq
用hibernate取1W+的数据然后把这些数据的实体放到一个Combo中(SWT)。这样子做速度奇慢无比!测试的时后超过了1分钟!

请问题有什么好的方案?

1
wlmouse
2007-11-11 09:09
无论用什么方法,这种操作都会严重影响性能。即使是数据全在内存中,也会造成严重的延时。大量数据读取数据一定要分页显示。

qq61990988
2007-11-11 21:33
hibernate对数据的承受能力不是很好,所以我觉得用jdbc比较好!

wlmouse
2007-11-12 10:00
即使采用JDBC,从数据库中一次读取这么多数据,对数据库和服务器及客户端都是严重考验。单用户还好,用户稍微一多肯定当掉。

即使服务器端没问题。客户端渲染一个超过1W行的控件会是个什么情况?

huangnac
2007-11-12 15:33
楼主你既便取一万行的数据也不可能一次性显示出来吧,为何不显示多少取多少呢?这样对服务器的压力可能要小很多吧!

newthinker
2007-11-12 17:32
没什么好说的,如果你非要一次取这么多数据出来,只能忍受这一分钟的煎熬,直接用jdbc也不会快,还有一点,你仔细看看你是否对一些关联对象做了延迟加载,如果不需要立即抓取关联对象,象你这样的操作最好对关联的对象采用延迟加载,性能会好很多!因为数据库不需要笛卡儿运算.还有就是上面几位提过的分页,如果你考虑了这些,你应该发现应用的性能不是问题.祝你好运.

eyeqq
2007-11-12 17:40
试过HQL只返回所需要的字段,也试过用JDBC。

最终还是很慢。

现在把这个东西改了,改成一个带选择按钮的text,让用户在一个做好分页的dialog里面去找所要的记录,而不是在ComBo里头去自动匹配。感觉这样做是以知的最好的解决方案了……

客户接不接受就得怎上头的外交了……

谢谢大家。

glamey
2007-11-14 15:27
楼主一次取出来1万个数据也显示不出来呀,那是分开取比较方便,这样能充分的利用hibernate的基本函数。

如果真的要一次性的取出1万条数据的话,建议使用xml来传输,这样的速度也是相当快的。

banq
2007-11-14 15:32
在Hibernate手册中有关于大量数据操作的特殊处理办法:如使用批处理策略,关闭缓存等等。

猜你喜欢