Большая таблица данных JSF, поддерживаемая базой данных, которая может обрабатывать разбиение на страницы / сортировку - PullRequest
4 голосов
/ 03 марта 2010

Если у меня большое количество табличных данных, которые я пытаюсь отобразить в виде данных JSF. Существуют ли какие-либо реализации или компоненты, которые могут обрабатывать и сортировать базы данных?

В настоящее время мне нужно вытащить все строки в таблице назад и обработать страницы клиента и сортировку на стороне клиента в JSF. К сожалению, это не очень эффективно и иногда приводит к нехватке памяти на моем сервере приложений.

В идеале, эта реализация с возможностью обработки данных могла бы каким-либо образом обернуть JDBC-запрос или Hibernate-запрос. Я не застрял на JSF 1.2, я планирую обновить до 2.0 в ближайшее время, если это имеет значение.

Ответы [ 3 ]

3 голосов
/ 03 марта 2010

Извлечение richfaces с данными с данными с таблицей фильтрацией и таблицей сортировкой Или расширенный набор данных

Но, да, я забыл одну небольшую заметку :), Если вам нужно перейти в базу данных и обработать свою фильтрацию / сортировку на уровне БД, вам нужно будет обеспечить собственную реализацию DataModel, расширив org.ajax4jsf.model. SerializableDataModel.

Есть некоторые блоги, идущие таким образом, см. этот

2 голосов
/ 03 марта 2010

У вас всегда будут проблемы с памятью, когда код Java перемещает / копирует набор данных весь хранилища данных (например, СУБД) в памяти Java, а затем выполняет сортировку и фильтрацию прямо в памяти Java с использованием кода Java , Будет еще хуже, если вы даже сохраните его в области сеанса веб-приложения.

Наиболее эффективный подход к памяти - позволить БД выполнить задачу, для которой она придумана. Язык SQL предлагает вам в каждом предложении ORDER BY выполнить сортировку, предложении WHERE выполнить фильтрацию и (* в зависимости от поставщика БД) LIMIT/OFFSET предложения / подпункты / функции, чтобы возвращать только подмножество записей на основе firstrow и rowcount или lastrow . Таким образом, вы получите только набор данных в памяти Java, который фактически должен отображаться.

Нет стандартного компонента JSF, который делает именно это. Это всегда будет требовать, чтобы весь набор данных был доступен в памяти Java, потому что фильтрация и сортировка должны выполняться с использованием чистого кода Java или JavaScript. JSF ничего не знает о SQL, вам нужно предоставить пользовательскую реализацию javax.faces.model.DataModel для данных и / или контролировать / управлять ею на уровне доступа к данным самостоятельно. Вы можете получить много новых идей / идей и найти пример в этой статье . Вы также можете найти примеры необходимых запросов SQL в этом JSP-ориентированном ответе , который я опубликовал ранее здесь.

Удачи.

1 голос
/ 29 июня 2010
...