Я использую именованный запрос Hibernate для выполнения хранимой процедуры, возвращающей очень большой набор данных (более 2 миллионов строк). БД - Oracle 11g
например:
Query query = session.getNamedQuery(procName);
Я знаю из документации по спящему режиму, вы не можете использовать setFirstResult / setMaxResult, как указано на
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html.
Все хорошо, на меньшем наборе данных, таком как 100 000 строк. Однако, как только я тестирую с 1 000 000, я получаю ошибку OutOfMemory.
Из объекта запроса я получаю listIterator. Я предположил, что данные были получены только один раз, я перебираю список (query.list().listIterator()
)
У меня не настроен кэш 2-го уровня.
Помогут ли эти настройки при работе с хранимой процедурой Oracle.
query.setCacheMode(org.hibernate.CacheMode.IGNORE);
query.setFetchSize(1000);<br>
query.scroll(org.hibernate.ScrollMode.FORWARD_ONLY);
По сути, как мне управлять извлечением больших наборов данных, используя хранимые процессы в Hibernate.
Миллион благодарностей