Невозможно получить более 50000 записей в Hibernmate HQL List - PullRequest
0 голосов
/ 15 июня 2011

Я использую распорки в спящем режиме.

У меня есть одна таблица, в которой более 50 тыс. Записей, но я не могу получить эти записи в arraylist, когда я пытаюсь, это всегда вызывает у меня java heap space exception- Out of memory.

В чем проблема?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

У вас уже есть ответ: вам потребуется больше места в куче, больше оперативной памяти или меньше записей.

Вы можете попытаться увеличить объем памяти, доступной для вашей JVM, но лучше задать вопрос: почемувам нужно запросить 50K записей?

Если вы обрабатываете их на Java, возможно, лучше было бы использовать стратегию, которая выполняет вычисления в базе данных.

Вашим клиентам определенно не нужно смотреть на записи по 50 тыс.один раз.Google может получить миллионы просмотров, но они расставят приоритеты и отправят вам 25 лучших за раз.Ваше приложение должно эмулировать эту стратегию.

0 голосов
/ 15 июня 2011

Если вам просто нужно обрабатывать одну сущность за раз (например, для записи всех сущностей в файл экспорта), вы можете посмотреть, как можно передавать результаты в Hibernate.

Следующая ссылка указывает на статью, в которой говорится об этой теме в контексте NHibernate, но решение должно быть применимо и к Hibernate: http://ayende.com/blog/4548/nhibernate-streaming-large-result-sets

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...