Использую базу данных Postgre SQL, фреймворк Vaadin и add-on Jpa Container для связи Vaadin и Hibernate. При использовании возникает такая проблема: при отображении таблицы из в базы в таблицу на интерфейсе через контейнер, hibernate делает для каждой записи отдельный запрос.в результате, если у меня например 500 записей, то будет сделано 500 запросов к базе. В результате чего страницы грузятся очень долго. Если использовать SQL контейнер или Hbn container, то проблемы такой не возникает.
Вот код создания контейнера и назначения его таблице:
Есть ли новости о JPA Container’е.
Проблема осталась и по сей день, Vaadin v7.3.0.
И делает JPA Container ненужной поделкой. Что обидно, ведь идея верная.
хотите сказать что он грузит сразу всю таблицу из бд? я использую eclipselink, и он грузит ровно по 150 записей единожды, если выставить уровень логгирования fine, то можно это увидеть. протестировал на разных количествах записей, все ок. начальная загрузка всегда медленная при любом количестве, дальше работает нормально
при отображении таблицы из в базы в таблицу на интерфейсе через контейнер, hibernate делает для каждой записи отдельный запрос.
Т.е. ненужные единичные запросы к БД идут
для каждой видимой записи при начальной загрузке
при изменении положения курсора (select blah where rowid = 123)
Ещё раз подробнее. Используются EclipseLink и Oracle.
Порядок запросов следующий
select fields from table limit 75 (там не limit, a оракловский синтаксис с rowid, наизусть не помню. 75 - видимый размер страницы в таблице)
75 штук select fields from table where rowid = 0…74
при смене положения курсора select fields from table where rowid = new_cursor_item_id
Правильным было бы ограничиться первым запросом на 75 записей, остальные решительно не нужны. Число 75 здесь для примера. Можно изменить размер таблицы отображения и это число соответственно изменится.
LazyQueryContainer в то же время работает именно как нужно, никаких лишних запросов.
Я вообще с трудом понимаю, для чего в принципе нужны единичные запросы? Это очевидное убийство производительности.