在hibernmate HQL列表中无法获取超过50000条记录

时间:2011-06-15 09:43:38

标签: hibernate hql

我正在使用struts hibernate。

我有一个表有超过50K的记录,但是我无法在arraylist中获取那些记录,当我尝试时,它总是激发我java heap space exception- Out of memory

这是什么问题?

2 个答案:

答案 0 :(得分:1)

你已经有了答案:你需要更多的堆空间,更多的RAM或更少的记录。

您可以尝试增加JVM可用的内存,但更好的问题是:为什么需要查询50K记录?

如果您正在使用Java处理它们,那么对数据库进行计算的策略可能是更好的主意。

您的客户当然不需要同时查看50K记录。谷歌可能会获得数百万次点击,但他们会优先考虑这些点击率,并一次向您发送前25位。您的应用应该模仿该策略。

答案 1 :(得分:0)

如果您只需要一次处理一个实体(例如,将所有实体写入导出文件),您可能希望了解如何在Hibernate中传输结果。

以下链接指向在NHibernate上下文中讨论此主题的文章,但该解决方案也适用于Hibernate:http://ayende.com/blog/4548/nhibernate-streaming-large-result-sets