В чем разница между setMaxResults и setFetchSize в org.hibernate.Query? - PullRequest
49 голосов
/ 22 мая 2011

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

Ответы [ 3 ]

54 голосов
/ 22 мая 2011

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

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

42 голосов
/ 22 мая 2011

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

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

6 голосов
/ 29 августа 2016

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

criteria.setMaxResults(25);

будет извлекать только 25 записей из 100 записей, а

criteria.setFetchSize(20);

будет извлекать 20 записей одновременно.пока он не прочитает все 100 записей из таблицы.

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