|
|
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
NixicЯ вот саму суть работы с контейнерами не понял, именно в отношении ленивой подгрузки. Дай ссылку на демку по таблицам. Там у ленивых так и написано что ленвые и скроллинг есть. Так что где этого нету, то и мудрить бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 22:04 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Поверхностное изучение темы привело меня к следующим выводам: 1. В 8-й версии Vaadin переработали компоненты так, что теперь они из коробки поддерживают лейзиЛоадинг : This is just the tip of the iceberg. There are many other exciting enhancements coming up. For example, a super easy way of connecting lazy loading components to data without a need to build a custom Container. We believe that Vaadin Framework 8 will make your life as a Java developer much easier. Делаем вывод, что раньше, то есть в 7-й версии лейзиЛоадинг приходилось подключать через(к) переписанные(м) контейнеры(ам) либо используя готовые аддоны не от команды Vaadin. 2. В 8-й версии Vaadin вообще убрали такой компонент как Table, я это уже знал и из-за этого не перехожу с 7-ки. Потому что: а) Переписывать дофига. б) Grid, которым заменили Table не поддерживает пока Drag and Drop, что меня не очень устраивает. Как пишут в оф.блоге, они скоро включат в 8.1 такой компонент как Grid 2.0, который по их словам просто великолепен для данных и поддерживает Drag and Drop. Его можно использовать уже сейчас, но нужно самому его включать в проект, в общем кому интересно, то вот ссылка. пост от 9 апреля 2017. в) Для Table, который убрали, у меня уже реализовано "раскрашивание" и другие манипуляции со стилями в зависимости от данных, которые в таблице отображаются. 3. Насколько я понял, сам компонент Table не поддерживает ленивой подгрузки, а использует контейнер, чтобы просто отображать данные, и он же отвечает за подгрузку, ленивую или не очень :) . Вот пример использования контейнера IndexedContainer с количеством строк в 1000. Про Lazy ни слова, но, по ощущениям, прокрутка очень резвая и подгружается по мере необходимости. Но! Если прочитать вот здесь описание Vaadin JPAContainer , то можно заметить, что в описании сказано примерно следующее: BeanItemContainer не поддерживает ленивую подгрузку, чтобы ее использовать, пожалуйста, посмотрите на аддоны Viritin и LazyQueryContainer. На счет IndexedContainer ничего не сказано. Также я нашел некоторые упоминания о Lazy loading при использовании Hibernate, а это как раз мой случай: Using JPAContainer with Hibernate Если кто-нибудь объяснит мне разницу между понятиями JPAContainer и IndexedContainer, то я буду очень благодарен :) Кажется я сейчас сравнил теплое с мягким, так как наткнулся на вот это про JPAContainer и вспомнил, что я его когда-то использовал, чтобы "быстро" создавать формы, и он не имеет отношения к IndexedContainer... или имеет? Вывод мой получился такой, что IndexedContainer не поддерживает ленивую подгрузку. 4. ... тут я еще что-то хотел дописать, но потерял мысль/мысли и запутался во вкладках браузера с открытыми доками, постами в блогах, стэковерфлоу и описаниями аддонов, контейнеров и еще массы всего :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 23:22 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123HettПричем тут пагинация, если у ТСа ошибка вываливается на уровне JPA, при ленивой загрузке связей. наверно при том, что не надо про неё рассказывать сказки и пугать детей. окей, ждем решения от профи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 09:04 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Nixic, А за ползунок у них почему нельзя таскать? Юзвери опупеют скролл таблы делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 13:15 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Nixic, А за ползунок у них почему нельзя таскать? Юзвери опупеют скролл таблы делать Тогда нужно еще задать вопрос, а знают ли эти юзверы про клавиатуру и про кнопки на ней pg down pg up, а так же home и end. Если на этот сарказм ответить серьезно, то скорее всего пользователи знают про то, что можно пользоваться и позунком и пространством под и над ним. И скорее всего некоторые из низ знают, что скорость скроллинга можно настроить в ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 13:28 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Nixic, ты меня не понял. Нет ползунка. Я с сотового смотрел. С десктопа вроде есть, а с сотового нет. Так сказать, изучал какой у них там функционал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 14:58 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
NixicКак пишут в оф.блоге, они скоро включат в 8.1 такой компонент как Grid 2.0 пущай поторопятся. Конкуренты не дремлют: - миллион строк http://www.qooxdoo.org/5.0.2/demobrowser/#table~Table_Remote_Model.html - http://w2ui.com/web/demos/#!combo/combo-9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 15:25 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Подводя итог. Ну почти :) В целом понял назначение того и того и вон этого... Но, неужели действительно есть такая проблема у всех веб-UI, как одновременное использование Lazy loading и Word wrap и, соответственно, автоподбор высоты строк. У всех (которые я видел) таблиц/гридов при ленивой подгрузке длинные строки обрезаются и ставится многоточие... Как я понял, эта проблема из-за неадекватного поведения скрола, то есть невозможно заранее просчитать его размер и... В общем тупик? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 21:11 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123NixicКак пишут в оф.блоге, они скоро включат в 8.1 такой компонент как Grid 2.0 пущай поторопятся. Конкуренты не дремлют: - миллион строк http://www.qooxdoo.org/5.0.2/demobrowser/#table~Table_Remote_Model.html - http://w2ui.com/web/demos/#!combo/combo-9 посмотрел оба или обои :) фреймворка, что-то там джавой как-то и не пахнет... или я не прав? :) а так, ничевошные оба, объединить бы их, а то там это есть, а тут то, я имею ввиду компоненты и работа с ними. По крайней мере в демках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 21:20 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
NixicНо, неужели действительно есть такая проблема у всех веб-UI, как одновременное использование Lazy loading и Word wrap и, соответственно, автоподбор высоты строк. Ты когда машиной управляешь с коробкой не на ручке, а с автоматом, особенности чувствуешь? Вот и тут, Excell и Веб таблички совсем разные вещи. Nixicа) Переписывать дофига. Нафига так писать проект чтобы кода было дофига? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 21:22 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Nixicпосмотрел оба или обои :) фреймворка, что-то там джавой как-то и не пахнет... или я не прав? :) да. Это JS клиент. А пользователям не всё равно на каком ЯП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 21:23 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Nixicпосмотрел оба или обои :) фреймворка, что-то там джавой как-то и не пахнет... или я не прав? :) да. Это JS клиент. А пользователям не всё равно на каком ЯП? все, короче, я сдаюсь, ЯП, эксель/веб,пагинация, дофига кода... всё, я кончился на этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2017, 22:20 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
NixicИспользуя для таблицы контейнер, а именно IndexedContainer, который предоставляет Vaadin, я подгружаю весь список в память, как я понимаю, клиента. То есть ленивая подгрузка как бы и не присутствует. Я ведь прав? Или не совсем.Все правильно.NixicПопробовал использовать BeanItemContainer, сразу же получил ошибку от хибернейтаПопытка вытащить другие связанные сущности или коллекции, но уже после закрытия сессии. NixicУ Vaadin есть аддон, называется Lazy Query Container, как я понял, он поддерживает ленивую подгрузку, почитал его описание, но пока его особенности не совсем понял.Почти та же идея пагинации, но вместо пролистывания страниц идет обычная подгрузка данных (догружает). В каком-то смысле это такой же контейнер, как и, например, BeanItemContainer (хотя у него там своя реализация контейнера), но работающий с фрагментом (окном/страницей/ view ) выборки + доп. операции. см. QueryDefinition / QueryView IMHO NixicЕще краем глаза читал про эклипсЛинк, но не стал вникать.Просто еще один JPA-"драйвер" (как альтернатива Hibernate) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2017, 03:32 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы. Попробовал и LazyQueryContainer и Viritin. LazyQueryContainer мне показался слишком замудреным с точки зрения написания фильтров и сортировок. Пришлось добавлять дополнительные классы в код, заняло это прилично времени, так как примеров в интернете очень мало и они не свежие. А официальная документация скудна и так же содержит примеры их старых версий, многих методов нет или они переписаны по другому. ДжаваДоки хоть и есть и свежие, но не несут представления как именно использовать тот или другой класс и его методы совместно с другими, лишь краткое описание(в принципе так оно и должно быть). Хотя работает отлично, при 1100_с небольшим строках, показал хорошую скорость подгрузки при прокручивании, при переходах в начало и конец таблицы. В режиме редактирования, когда на каждую строку на определенные столбцы навешаны свои методы через TableFieldFactory, скорость чуть хуже, но приемлемо. В диспетчере задач хрома он показал примерно 130-160мб у вкладки с таблицей в обычном режиме и 160-190мб в режиме редактирования. Возможно чуть больше, в общем до 210мб. При этом вполне возможно еще комфортно работать. Далее я посмотрел Viritin и его MTable, который расширяет стандартный Table от Vaadin. (на нем, кстати останусь теперь для "проблемных" таблиц) Подключить его заняло какие-то минуты и все сразу же взлетело. И сортировка и ленивая подгрузка. При этом таблице достаточно дать коллекцию данных через myTable.setBeans(Collection<T> beans) и она будет использовать её через свой собственный контейнер, который вроде бы называется LazyList , но я не стал вдаваться в подробности, может быть позже. Теперь немного статистики для тех же данных, того же объема в 1100_с небольшим, объектов, то есть строк в MTable. При просмотре таблицы, при хаотичной прокрутке, в том числе стрелками клавиатуры, постраничной прокрутке через пейдАп/Даун, хоум и енд (прошу прощения за названия на русском:) ) диспетчер задач хрома показывает примерно те же 140-160мб что и при использовании LazyQueryContainer. 180-210мб в режиме редактирования, вполне крутибильно и кликабельно получается. Все эти "тесты" были проведены с использованием стилей css, которые включают в ячейках перенос слов, а высота ячейки и соответственно всей строки увеличивается. То есть высота строк становится различной и при просмотре и в режиме редактирования таблицы. В итоге, все же, я решил, что в данном UI высоту строк сделаю под 2-е строки (если конкретно, то 40px). Для сравнения: при тех же условиях стандартный IndexedContainer от Vaadin, без ленивой подгрузки, при вдвое меньшем количестве строк, то есть 500, почти сразу же начинает подтормаживать и чем дольше работать с таблицей, тем хуже. 500-600-800мб и выше отображаются в диспетчере задач хрома и это, повторюсь, при объеме вдвое меньшем. Надо заметить, что для других сущностей/объектов БД, которые содержать меньше полей чем та, которую я тестировал, IndexedContainer работает сносно и даже очень хорошо. Или когда используется гораздо меньше столбцов в самой таблице и без фишек css, которые влияют на высоту строк. И менять его просто так не стоит, если он и так справляется с данными. п.с. нужно не забывать при работе с Table про такие параметры как table.setPageLength(int) и table.setCacheRate(int), они так же влияют на скорость отображения таблицы и работы в ней/с ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2017, 16:46 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39440873&tid=2122956]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 354ms |

| 0 / 0 |
