Подтвердить что ты не робот

В чем разница между setMaxResults и setFetchSize в org.hibernate.Query?

В чем разница между setMaxResults и setFetchSize в org.hibernate.Query? Я просто не могу это получить =)

4b9b3361

Ответ 1

setMaxResults совпадает с LIMIT в SQL - вы устанавливаете максимальное количество строк, которые хотите вернуть. Конечно, это очень распространенный случай использования.

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

Ответ 2

setMaxResults ограничивает количество результатов, которые запрос когда-либо получит.

setFetchSize сообщает драйверу jdbc, сколько строк возвращается в один кусок для больших запросов. Скажем, вы хотите 1000 строк. Если вы установите размер выборки в 100, db вернет 100, затем еще 100, когда вы хотите больше, и так далее. setFetchSize ничего не сделает, если ваш драйвер не поддерживает его.

Ответ 3

Например, таблица содержит 100 записей.

найдите ниже пункты

критерии .setMaxResults(25);: он извлекает только 25 записей из 100 записей.

criteria.setFetchSize(20);: он будет извлекать 20 записей каждый раз, пока не будет прочитано все 100 записей из таблицы.