Такая ситуация. Есть приложение, Struts + Spring + Hibernate. Необходимо раелизовать постраничный вывод большого объема данных на jsp. C возможностью сортировки по всему набору. Сейчас используется displayTag, но у него отсутствует последнее. Т.Е. сорировка есть, но сортитует он только одну страницую paging-а.
У кого была подобная трабла, и что можно использовать для решения такой задачи?
Здравствуйте, DenisVN, Вы писали:
DVN>Доброго времени суток!
DVN> Такая ситуация. Есть приложение, Struts + Spring + Hibernate. Необходимо раелизовать постраничный вывод большого объема данных на jsp. C возможностью сортировки по всему набору. Сейчас используется displayTag, но у него отсутствует последнее. Т.Е. сорировка есть, но сортитует он только одну страницую paging-а.
это как? по моему дисплэй таг получает на входе коллекцию а на выходе выводит нужную порцию отсортированных данных, если задана сортировка.
DVN>У кого была подобная трабла, и что можно использовать для решения такой задачи?
Другое дело, что делать паджинг самим displayTag-ом занаятие довольно расточительное, так как требует выгрузки всего объема данных из БД в память, так что тут надо использовать паджинг и сортировку на более низком уровне, нежели отображение — на уровне запроса к БД. Однако и тут могту быть разочарования, так как не все субд поддерживают ограничение выборки. Так же может получиться ситуация когда сортировка даже на стороне сервера БД будет занимать длительное время, что потребует некоторых усилий в оптимизации структур БД и запросов.
Спасибо за совет. Displaytag lействительно делает все как надо. для сортировки всей коллекции, а не страницы, достаточно в параметрах указать
sort="list". Однако всплывают куча камней с производительностью. Скорее всего придется делать ручками.
У Oracle возможность ограничение выборки существует? И возможно ли это использовать через hibernate?
Здравствуйте, DenisVN, Вы писали:
DVN>Спасибо за совет. Displaytag lействительно делает все как надо. для сортировки всей коллекции, а не страницы, достаточно в параметрах указать DVN>sort="list". Однако всплывают куча камней с производительностью. Скорее всего придется делать ручками. DVN> У Oracle возможность ограничение выборки существует? И возможно ли это использовать через hibernate?
DVN>Спасибо.
Может я не прав, но по моему такой подход немного не стыкуется с принципами MVC. В представление данные уже должны передаваться в отсортированном виде, чтобы их можно было просто вывести. Контроллер должен подготовливать данные для представления, но и тут же опять — контроллер должен уже получить данные в отсортированном виде. Остается одно — в классе, где вы получаете данные из БД и нужно сортировать, если это возможно сделать правильным запросом — то так и нужно поступить.
Здравствуйте, lexius, Вы писали:
L>Может я не прав, но по моему такой подход немного не стыкуется с принципами MVC. В представление данные уже должны передаваться в отсортированном виде, чтобы их можно было просто вывести. Контроллер должен подготовливать данные для представления, но и тут же опять — контроллер должен уже получить данные в отсортированном виде. Остается одно — в классе, где вы получаете данные из БД и нужно сортировать, если это возможно сделать правильным запросом — то так и нужно поступить.
ИМХО MVC штука полезная, и для моенго случая наверное придется делать все как НАДО, но если количество данных не велико, то displaytag подойдет вполне.
Здравствуйте, DenisVN, Вы писали:
L>>Может я не прав, но по моему такой подход немного не стыкуется с принципами MVC. В представление данные уже должны передаваться в отсортированном виде
DVN>ИМХО MVC штука полезная, и для моенго случая наверное придется делать все как НАДО, но если количество данных не велико, то displaytag подойдет вполне.
1) lexius говорит дело
2) не сортируя на уровне БД, невозможно правильно реализовать постраничный вывод (за исключением заведомо абсурдной ситуации с выемкой всех данных и сортировкой/pagingом на клиенте)
Здравствуйте, C0s, Вы писали:
C0s>1) lexius говорит дело
Я с ним не спорю
C0s>2) не сортируя на уровне БД, невозможно правильно реализовать постраничный вывод (за исключением заведомо абсурдной ситуации с выемкой всех данных и сортировкой/pagingом на клиенте)
В DisplayTag данные сортируются на стороне сервера, при подготовке html к отправке клиенту, да и разбивка на странице тоже. Я что то не заметил там никаких javascript. Другое дело что для этого используется медленная Java.
Здравствуйте, DenisVN, Вы писали:
DVN>В DisplayTag данные сортируются на стороне сервера, при подготовке html к отправке клиенту, да и разбивка на странице тоже. Я что то не заметил там никаких javascript. Другое дело что для этого используется медленная Java.
DVN>Поправьте меня если я не прав. ты не прав.
Здравствуйте, Lucker, Вы писали:
L>Здравствуйте, DenisVN, Вы писали:
DVN>>В DisplayTag данные сортируются на стороне сервера, при подготовке html к отправке клиенту, да и разбивка на странице тоже. Я что то не заметил там никаких javascript. Другое дело что для этого используется медленная Java.
DVN>>Поправьте меня если я не прав. L> ты не прав.
ну к словам цепляться только не нужно. Мы все взрослые люди и понимаем ЧТО подразумевалось этим предложением.
Здравствуйте, DenisVN, Вы писали:
C0s>>2) не сортируя на уровне БД, невозможно правильно реализовать постраничный вывод (за исключением заведомо абсурдной ситуации с выемкой всех данных и сортировкой/pagingом на клиенте)
DVN>В DisplayTag данные сортируются на стороне сервера, при подготовке html к отправке клиенту, да и разбивка на странице тоже. Я что то не заметил там никаких javascript. Другое дело что для этого используется медленная Java.
DVN>Поправьте меня если я не прав.
по-моему дело не в правоте, а в небольшом взаимонепонимании
в данном контексте под словом "клиент" я имел в виду ту часть приложения (написанную на java), которая готовит страницу с данными, а "сервер" — это СУБД