|
|
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Помогите, пожалуйста, определиться с проблемой и её решением. Есть веб-аппликейшен на ваадин. Есть в нем таблица, которая принимает данные в виде List<T> Данные я получаю примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Используя для таблицы контейнер, а именно IndexedContainer, который предоставляет Vaadin, я подгружаю весь список в память, как я понимаю, клиента. То есть ленивая подгрузка как бы и не присутствует. Я ведь прав? Или не совсем. Попробовал использовать BeanItemContainer, сразу же получил ошибку от хибернейта: Код: powershell 1. Что, как я понимаю логично, ведь у меня em.close(); Убрал я в блоке файналли этот close, и все данные отобразились без ошибки. Прочитал, что IndexedContainer и BeanItemContainer, эти контейнеры как описано: An in-memory container for JavaBeans. То есть не держат сессию открытой, а подгружают в память, как я понял, если правильно понял. У Vaadin есть аддон, называется Lazy Query Container, как я понял, он поддерживает ленивую подгрузку, почитал его описание, но пока его особенности не совсем понял. Еще краем глаза читал про эклипсЛинк, но не стал вникать. В общем не совсем понимаю, саму суть этих всех контейнеров, в частности в связке их с хибернейтом и моим способом получения листа данных, которые я контейнеру передаю, может кто-то вкратце описать общий принцип, как и что лучше использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 10:42 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
авторТо есть ленивая подгрузка как бы и не присутствует. Я ведь прав? В DinamicProduct связи есть? Я сделал так: Код: java 1. Но не знаю какие могут быть подводные камни, тоже интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 10:48 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
HettВ DinamicProduct связи есть? Да есть и они все с явным указанием Lazy, хоть по-умолчанию оно, вроде как, Lazy. Hett Код: java 1. Про это тоже читал, но пока не стал вставлять в свой persistence.xml, так как толком не вник в этот проперти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 10:58 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
HettВ DinamicProduct связи есть? Код: java 1. 2. хоть и в коде получения листа данных я использовал "ненормализованное" с точки зрения БД поле offerId, но это не так уж и важно в контексте этой темы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 11:01 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Дополню тогда топик связанным вопросом, точнее даже это прямое отношение имеет к нему: Следующий код работает без транзакции Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. А вот такое обращение выкинет ошибку о работе вне транзакции. Код: java 1. В чем разница и почему первый работает без транзакции, а второй только внутри? Как понимаю Lazy подгрузка происходит вторым способом и отсюда же идет необходимость в транзакции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 11:20 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Nixic, Было что-то вроде такого... Решил через Service/DAO-прослойку - метод в сервисе, где и происходит вся работа с БД (Hibernate) Метод помечается Spring'овым @Transactional ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 19:01 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
UsmanService/DAO-прослойкуну, и конечно же, класс сервиса помечается аннотацией @Service ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 19:03 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Nixicу меня em .close();этот "зверь" должен быть изолирован от UI (: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2017, 19:07 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
UsmanNixicу меня em .close();этот "зверь" должен быть изолирован от UI (: Вот тут я немного не понял :) У меня он в методе, которые в отдельном классе, вроде как изолирован от UI :) или речь о каком-то другом уровне изоляции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 07:17 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
NixicУ меня он в методе, которые в отдельном классе, вроде как изолирован от UI :)Перечитал первый пост... и понял, что мне не хватило совсем немного телепатических навыков... (: вобщем, все еще учусь © ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 07:48 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
UsmanNixicУ меня он в методе, которые в отдельном классе, вроде как изолирован от UI :)Перечитал первый пост... и понял, что мне не хватило совсем немного телепатических навыков... (: вобщем, все еще учусь © У меня не используется спринг в этом проекте. Суть вопроса была в описании вкратце работы контейнеров, в частности их работы в режиме Lazy при использовании хибернейт. С учетом существующего способа выгребания данных из БД, который, возможно стоит как-то изменить. Все это для того, чтобы отобразить в таблице ваадина 1000+ строк данных, так, чтобы не засорять память клиента и не вызывать при этом тормозов при прокрутке. Ну и в описании первого поста есть описания моих подвижек в этом направлении, которые, скорее всего, неправильны в силу отсутствия понимая принципов работы с контейнерами, ленивой подгрузкой данных и сессий хибернейта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 08:28 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Вчера 2 книжки пролистал, в которых в оглавлении есть "JPA", но нужный подробностей так и не нашел. @Transactional - это из спецификации JPA, причем тут спринг? Унаследовали оттуда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 08:41 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
NixicС учетом существующего способа выгребания данных из БД, который, возможно стоит как-то изменить.опять же используйте пагинацию NixicВсе это для того, чтобы отобразить в таблице ваадина 1000+ строк данных, так, чтобы не засорять память клиента и не вызывать при этом тормозов при прокрутке.IMHO, как по мне, появление вертикального скролла в таблице - плохо. Конечно, можно задать кол-во строк на страницу. Обычно к пагинации, в добавок, припиливается функционал поиска/фильтра - пользователь захотел найти/отфильтровать кое-какие данные, при этом отпадает необходимость листать стопицот страниц в поисках чего-то нужного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 08:41 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Hettпричем тут спринг?обычно использую в рамках спринга и у них походу своя аннотация. тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 08:43 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
UsmanIMHO, как по мне, появление вертикального скролла в таблице - плохо. Конечно, можно задать кол-во строк на страницу. Обычно к пагинации, в добавок, припиливается функционал поиска/фильтра - пользователь захотел найти/отфильтровать кое-какие данные, при этом отпадает необходимость листать стопицот страниц в поисках чего-то нужного. Да, абсолютно согласен, но пользователям этим нужная вся портянка, они привыкли к экселю, где 255000 или сколько у него там строк вниз по умолчанию и хотят, чтобы было так же и здесь. Пагинацию я могу добавить и скорее всего попытаюсь позже, но уже используя компонент Vaadin'a Grid, вот только его немного допилят (вроде как скоро уже). Фильтрацию, конечно же, тоже использую, в данном случае так называемый поиск по названию и по группе товара. Суть бизнеса для которого я это пишу - продажи. У них бывают большие, с точки зрения времени работы над ними сотрудниками, заявки в 1000-2000 строк товара. Это процентов 10 примерно из всех. Но их тоже нужно отрабатывать. В этом случае пагиннация, особенно если сделать строк по 30 на "страницу" будет не совсем уместна. Просто я вижу в примерах где используется 1 000 000 строк в таблице, при этом можно соскролиться ближе к концу и отредактировать (вот здесь не уверен, примера не видел) данные в строке. А у меня лажа какая-то уже при 500+ строк с этими лейзи не лейзи :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 09:10 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Ах да и самая большая "проблема" почему здесь может быть неуместна паггинация - позиции могут повторяться, причем несколько раз во всем списке из 1000 позиций, одни могут быть в начале, другие в конце. И не просто повторяться, а называться по разному, начинаться с разных слов/букв, но по сути это один и тот же товар. Даже отсортировав по имени можно что-то упустить. Вот поэтому они и бьются за то, чтобы все было на одной странице в таблице. Как в Экселе) Хотя все это дело привычки и внимательности сотрудников. В общем с лейзи надо все равно что-то делать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 09:20 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Nixic, Вы в своем уме, 250тыс.строк на клиенте? У вас будет либо нобелевская, либо Белая ворона. Выбирайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 12:01 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
NixicАх да и самая большая "проблема" почему здесь может быть неуместна паггинация - позиции могут повторяться, причем несколько раз во всем списке из 1000 позиций, одни могут быть в начале, другие в конце. И не просто повторяться, а называться по разному, начинаться с разных слов/букв, но по сути это один и тот же товар. Даже отсортировав по имени можно что-то упустить. Вот поэтому они и бьются за то, чтобы все было на одной странице в таблице. Как в Экселе) Хотя все это дело привычки и внимательности сотрудников. В общем с лейзи надо все равно что-то делать :) Разницы, в том что человек видит 10 строк и > 10 строк практически никакой. А Ексель удобен для "сверки" тем что там удобный механизм фильтрации данных. Дайте гриду с удобной фильтрацией и не нужна будет портянка данных. На крайний случаей есть стильно-модно-молодежный способ "бесконечного скролинга". Когда данные отдаются как при пагинации, но просто добавляются вконец. А передавать туда-сюда портянки данных из 10 000 строк, как-то не правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 12:46 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
mad_nazgulNixicАх да и самая большая "проблема" почему здесь может быть неуместна паггинация - позиции могут повторяться, причем несколько раз во всем списке из 1000 позиций, одни могут быть в начале, другие в конце. И не просто повторяться, а называться по разному, начинаться с разных слов/букв, но по сути это один и тот же товар. Даже отсортировав по имени можно что-то упустить. Вот поэтому они и бьются за то, чтобы все было на одной странице в таблице. Как в Экселе) Хотя все это дело привычки и внимательности сотрудников. В общем с лейзи надо все равно что-то делать :) Разницы, в том что человек видит 10 строк и > 10 строк практически никакой. А Ексель удобен для "сверки" тем что там удобный механизм фильтрации данных. Дайте гриду с удобной фильтрацией и не нужна будет портянка данных. На крайний случаей есть стильно-модно-молодежный способ "бесконечного скролинга". Когда данные отдаются как при пагинации, но просто добавляются вконец. А передавать туда-сюда портянки данных из 10 000 строк, как-то не правильно. )))) уффф)) да дам я гриду все фильтры, дам :) Вопрос-то не в этом совсем. И даже не в том, что надо видеть 250тыс строк сразу на клиенте, кстати это был пример как работают со строками в экселе, что юзерам надо так же чтоб было быстро и чтоб много-много строчек и чтоб еще осталось, ограничимся парой тысяч строк. Дак вот чтобы они все отображались по мере необходимости, то есть была ленивая подгрузка, что вниз мы крутим, что вверх крутим, все одно и не тормозит. Пагинация не рассматривается, так как она заставляет юзера щелкать мышой лишний раз прицельно, вместо плавного кручения колеса мыши. Вопрос был про контейнеры и их свойства, про их применяемость в том или ином случае, про их особенности в кратце. А то блин началось, 250000 строк отдаем на клиента и получаем нобелевку ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 16:19 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Nixic, скоро на вторую страницу пойдём. 1. Дай ссылку на таблицу ваадин с ленивой подгрузкой. Помнится они обещали такую сделать пару лет назад. Сделали? Если нет, то что ты тут обсуждаешь? 2. 2000 строк за раз вполне можно делать с пагинацией. Я правда видел 1000, а не 2000, но мы же о веб проекте говорим. И не сравнивай веб проект с Excell десктоп. Найди хоть один пример в Веб просторах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 21:06 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Причем тут пагинация, если у ТСа ошибка вываливается на уровне JPA, при ленивой загрузке связей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 21:27 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123Nixic, скоро на вторую страницу пойдём. 1. Дай ссылку на таблицу ваадин с ленивой подгрузкой. Помнится они обещали такую сделать пару лет назад. Сделали? Если нет, то что ты тут обсуждаешь? Ага! Ну вот уже, что-то. То есть получается, у компонента Table вообще не может быть ленивой подгрузки? Пока это писал, решил глянуть, нарыл, что лейзиЛоадинг у Table идет на уровне контейнера. Я точно не уверен что правильно сейчас скажу, но получается, что все зависит от контейнера, в данном случае. А если брать Grid, то там это уже на уровне компонента реализовано, так получается? Я вот саму суть работы с контейнерами не понял, именно в отношении ленивой подгрузки. Вот и подумал, что, кто-нибудь вкратце ткнет носом куда надо)) Пока буду рыть спеки и оф.документацию по всем этим делам, может что прояснится в итоге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 21:55 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
Petro123И не сравнивай веб проект с Excell десктоп. А если надо? :) Кстати, я не видел как работа с таблицами сделана в 1С, у них же тоже есть веб-поддержка интерфейса какая-то, у них-то явно большие объемы данных и в теории веб должен бы соответствовать десктопной версии ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 21:59 |
|
||
|
vaadin, lazy container, hibernate
|
|||
|---|---|---|---|
|
#18+
HettПричем тут пагинация, если у ТСа ошибка вываливается на уровне JPA, при ленивой загрузке связей. наверно при том, что не надо про неё рассказывать сказки и пугать детей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2017, 22:01 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39439536&tid=2122956]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 192ms |
| total: | 385ms |

| 0 / 0 |
