powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Сортировка, фильтрация, постраничная загрузка в web-приложении
7 сообщений из 7, страница 1 из 1
Сортировка, фильтрация, постраничная загрузка в web-приложении
    #34493664
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем!
Помогите, пожалуйста советом. Я еще новичок в web-программировании, поэтому сильно не пинайте.
Ситуация следующая. Пишу основанное на сервлетах web-приложение в IBM Rational 6.0. Выбрана СУБД DB2. Структура базы такова - таблица-родитель и несколько таблиц-детей. На каждую таблицу создан класс, свойства которого соответствуют полям таблицы, а методы позволяют с ней работать. Операции основаны на SQL-скриптах. Например, метод readAll соединяется с базой и запускает простой скрипт "SELECT * FROM "+authId+".PERSONS", а затем результаты выборки запихивает в коллекцию. Эта коллекция и отображается в таблице одной из JSP-страниц. Остальные методы работают аналогично - соединяются, подготавливают скрипт и запускают его. Помоему, такой подход называется MVC, если не ошибаюсь.
И тут встал вопрос о наболевшем. Как правильно реализовать постраничную загрузку данных (таблица-родитель может содержать немало записей), сортировку по столбцам в таблице JSP и фильтр данных?
Есть некоторые соображения. Поскольку таблицы-дети не содержат большого количества записей (в моем случае), то постраничная загрузка там не нужна и сортировку данных можно выполнить используя java.util.Collections. Это же для таблицы-родителя, вероятно, нужно реализовать через соответствующие SQL-скрипты. Т.е. для сортировки использовать метод класса, который бы извлекал коллекцию записей с помощью скрипта "... ORDER BY ...", а для фильтра - с помощью скрипта "... WHERE ...". Тогда какой скрипт использовать для постраничной загрузки? В такой реализации получаем, что при каждой операции пользователя (сортировка, фильтр, и т.д.), будет обращение к базе.

Вообще, в правильном ли направлении я мыслю? Помогите советом, или дайте ссылку на информацию.

Заранее благодарен
С уважением, Семен Попов
...
Рейтинг: 0 / 0
Сортировка, фильтрация, постраничная загрузка в web-приложении
    #34493734
egoist.fish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Have a look at ResultSet.absolute() function and of course try to ask this question in "Java" thread.
...
Рейтинг: 0 / 0
Сортировка, фильтрация, постраничная загрузка в web-приложении
    #34494502
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thanks. I thought, that this thread have a specialists on my problem. Простите за ужасный английский, конечно. Ну чтож, перадресую свой вопрос в форум "Java". Спасибо.
...
Рейтинг: 0 / 0
Сортировка, фильтрация, постраничная загрузка в web-приложении
    #34495270
chro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде как скроллируемый result set - (absolute) не слишком удачное решение, очень много ограничений ( http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/tjvrsush.htm ). К тому же держать соединие.
Общего ответа нет.
В случае, если количество результатов гарантированно небольшое, есть смысл сразу поместить их в память и доставать по мере надобности используя pagination библиотеки.
Если стоимость запроса слишком велика - то наверное скроллируемый ResultSet.
Если запрос быстро выполняется, а данных много, то вытащить хитрым запросом, как вариант в соседнем форуме. Другой вариант с fetch first - допустим есть колонка col1, по которой сортируются данные. Вначале берем fetch first n rows, запоминаем верхнее и нижнее значение col1 в сессии, и при переходе на следующую страницу вызываем тот же запрос, + where col1>col1_upper_value_on_previous_page fetch first n rows
...
Рейтинг: 0 / 0
Сортировка, фильтрация, постраничная загрузка в web-приложении
    #34495545
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Я тоже исключил ResultSet из моего дальнейшего решения этой задачи. А так, в основном, придерживаюсь Вашего совета - paging с помощью хитрых запросов. Можно осуществлять отбор записей по конкретной колонке с ее значением из определенного интервала(например, отбор в первую страницу записей с ID из интервала 1:100, во вторую - 101:200 и т.д.), а можно пользоваться запросом, который мне предложили в форуме Java. Так что для обсуждения этой темы предлагаю перейти в тот форум.
...
Рейтинг: 0 / 0
Сортировка, фильтрация, постраничная загрузка в web-приложении
    #34495723
тлгдшлщм
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно почитать документацию по DB2 и найти подобные функции в SQL.
Как то UDF со Scratchpad или конструкции типа ROW NUMBER OVER BY
...
Рейтинг: 0 / 0
Сортировка, фильтрация, постраничная загрузка в web-приложении
    #34499117
В принципе можно воспользоваться классами JDBC 3.0 (например javax.sql.CachedRowSet), которые позволяют получить результаты SQL-выборки в память, а обращаться к ней через обычный ResultSet.
Соответственно при первом обращении считываются данные из СУБД, а при постраничном выводе делать обращение только в CachedRowSet. Минус - доп. нагрузка на ОЗУ.

PS: Эти классы встроены в JDK 1.5, для JDK-1.4.2 доступны как дополнительная библиотека.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Сортировка, фильтрация, постраничная загрузка в web-приложении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]