powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / vaadin, lazy container, hibernate
14 сообщений из 39, страница 2 из 2
vaadin, lazy container, hibernate
    #39440509
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicЯ вот саму суть работы с контейнерами не понял, именно в отношении ленивой подгрузки.
Дай ссылку на демку по таблицам.
Там у ленивых так и написано что ленвые и скроллинг есть.
Так что где этого нету, то и мудрить бесполезно.
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39440548
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поверхностное изучение темы привело меня к следующим выводам:

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. ... тут я еще что-то хотел дописать, но потерял мысль/мысли и запутался во вкладках браузера с открытыми доками, постами в блогах, стэковерфлоу и описаниями аддонов, контейнеров и еще массы всего :)
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39440606
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123HettПричем тут пагинация, если у ТСа ошибка вываливается на уровне JPA, при ленивой загрузке связей.
наверно при том, что не надо про неё рассказывать сказки и пугать детей.

окей, ждем решения от профи
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39440862
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
А за ползунок у них почему нельзя таскать?
Юзвери опупеют скролл таблы делать
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39440873
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Nixic,
А за ползунок у них почему нельзя таскать?
Юзвери опупеют скролл таблы делать
Тогда нужно еще задать вопрос, а знают ли эти юзверы про клавиатуру и про кнопки на ней pg down pg up, а так же home и end.
Если на этот сарказм ответить серьезно, то скорее всего пользователи знают про то, что можно пользоваться и позунком и пространством под и над ним. И скорее всего некоторые из низ знают, что скорость скроллинга можно настроить в ОС.
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39440962
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
ты меня не понял. Нет ползунка. Я с сотового смотрел.
С десктопа вроде есть, а с сотового нет.
Так сказать, изучал какой у них там функционал.
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39440980
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39441223
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подводя итог. Ну почти :)

В целом понял назначение того и того и вон этого...
Но, неужели действительно есть такая проблема у всех веб-UI, как
одновременное использование Lazy loading и Word wrap и, соответственно, автоподбор высоты строк.

У всех (которые я видел) таблиц/гридов при ленивой подгрузке длинные строки обрезаются и ставится многоточие...
Как я понял, эта проблема из-за неадекватного поведения скрола, то есть невозможно заранее просчитать его размер и...
В общем тупик? :)
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39441227
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
посмотрел оба или обои :) фреймворка, что-то там джавой как-то и не пахнет... или я не прав? :)
а так, ничевошные оба, объединить бы их, а то там это есть, а тут то, я имею ввиду компоненты и работа с ними. По крайней мере в демках
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39441228
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicНо, неужели действительно есть такая проблема у всех веб-UI, как
одновременное использование Lazy loading и Word wrap и, соответственно, автоподбор высоты строк.
Ты когда машиной управляешь с коробкой не на ручке, а с автоматом, особенности чувствуешь?
Вот и тут, Excell и Веб таблички совсем разные вещи.
Nixicа) Переписывать дофига.
Нафига так писать проект чтобы кода было дофига?
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39441229
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicпосмотрел оба или обои :) фреймворка, что-то там джавой как-то и не пахнет... или я не прав? :)
да. Это JS клиент.
А пользователям не всё равно на каком ЯП?
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39441241
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Nixicпосмотрел оба или обои :) фреймворка, что-то там джавой как-то и не пахнет... или я не прав? :)
да. Это JS клиент.
А пользователям не всё равно на каком ЯП?
все, короче, я сдаюсь, ЯП, эксель/веб,пагинация, дофига кода... всё, я кончился на этом.
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39441294
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicИспользуя для таблицы контейнер, а именно IndexedContainer, который предоставляет Vaadin, я подгружаю весь список в память, как я понимаю, клиента. То есть ленивая подгрузка как бы и не присутствует. Я ведь прав? Или не совсем.Все правильно.NixicПопробовал использовать BeanItemContainer, сразу же получил ошибку от хибернейтаПопытка вытащить другие связанные сущности или коллекции, но уже после закрытия сессии.
NixicУ Vaadin есть аддон, называется Lazy Query Container, как я понял, он поддерживает ленивую подгрузку, почитал его описание, но пока его особенности не совсем понял.Почти та же идея пагинации, но вместо пролистывания страниц идет обычная подгрузка данных (догружает).
В каком-то смысле это такой же контейнер, как и, например, BeanItemContainer (хотя у него там своя
реализация контейнера), но работающий с фрагментом (окном/страницей/ view ) выборки + доп. операции.

см. QueryDefinition / QueryView

IMHO
NixicЕще краем глаза читал про эклипсЛинк, но не стал вникать.Просто еще один JPA-"драйвер" (как альтернатива Hibernate)
...
Рейтинг: 0 / 0
vaadin, lazy container, hibernate
    #39442900
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за ответы.
Попробовал и 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), они так же влияют на скорость отображения таблицы и работы в ней/с ней.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / vaadin, lazy container, hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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