Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hibernate pagination, стратегии постраничной выбор


Автор: UnicornMirage 10.11.2009, 15:25
Здравствуйте.

Задача - сделать постраничную выборку из большого множества. Причем в интерфейсе пользователя необходимо также указывать общее число записей (или общее число страниц). Как это можно (лучше) сделать, мне приходит в голову два варианта:

1) Выполнять два запроса, 
    сначала - SELECT count(*) FROM .. WHERE для получения общего кол-ва. 
Причем это число можно где нибудь кешировать, чтобы в следующий раз не выполнять запрос если мы просматриваем тот же список.

Затем мы указываем Query.setFirstResult(...), Query.setMaxResults(...) и выполняем 
    второй - from ... WHERE для получения записей


2) Использовать ScrollableResults, вариант быстрее, но не все СУБД его поддерживают.

Какие еще существуют более эффективные способы?

Автор: ivanovpv 10.11.2009, 16:31
Написать хранимку средствами СУБД, далее дергать хранимку. Это самый эффективный способ, но наименее транспортабельный.

Автор: Старовъръ 12.11.2009, 09:37
Если работаешь с Criteria API, то есть такая вещь как Projections.
Вот хорошая вещь: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)