![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Key |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 6.12.2007 Репутация: нет Всего: 1 |
Интересует вопрос по Hibernate/JPA.
Стандартный селекс с базы через EntityManager JPA Query query = em.createQuery("select object from Object object"); List<MyObject> myObject = query.getResultList(); Так вот оно выбирает данные по ид (по одному) и запихивает в обьекты. При этом очень много селектов! Можно ли это оптимизировать для меньшего числа селектов (кроме кеша) ? Большая выборка очень долго работает и генерирует большой траффик в сети. |
|||
|
||||
| garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
||||
|
||||
| Key |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 6.12.2007 Репутация: нет Всего: 1 |
Ну этот запрос выбирает все поля таблицы, только вытягивает он их по одному, если в таблице есть 40 записей, то это будет 40 селектов вида "select ..... where id=?", я так понял Гибернейт выбирает их по одному создавая сразу обьекты и тогда возвращяет их коллекцию. Если в таблице не 40 записей, а 100 тысяч, то оно ужасно тормозит. Можно ли делать это пакетами? Через аннотацию @Batch удалось уменьшить количество запросов + кеши на уровне базы и кеширование запросов помогли очень сильно, но всеравно селектов миллионы в час при активной работе с базой. Уже и методы и Entity закешировал, в два раза быстрее стало. Через JDBC все не переписать:( |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 9 Всего: 56 |
можно пакетами.
это называется paginating :
|
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Hibernate вроде всегда делал select * from table и запихивал результаты в коллекцию объектов. Откуда у вас получились where id=?, я даже не знаю. -------------------- Lost.... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |