| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Хранить ли объекты в сессии |
| Автор: JVM 6.5.2008, 09:41 |
| Есть некоторый список - допустим товаров. Этот список генегируется из базы и выводится пользователю. Далее пользователь выбирает товар(нажимает ссылку) и получает описание товара. Список товаров на сервере я получаю в виде объектов. Выдираю id товаров и записываю как параметр в ссылку. После того как пользователь нажал на ссылку с товаром, на сервере идет запрос в базу данных на получение объекта выбранного товара. Стоит ли хранить в сессии список объектов товаров и после выбора товара не делать запрос в БД, а получать объект товара из сессии? |
| Автор: Llucas 6.5.2008, 11:46 |
| Как вариант можно, правда стоит учитывать реальное количество пользователей, т.к. для нормальной работы размер занимаемой памяти сессией не должен быть большим. |
| Автор: kkorsakoff 6.5.2008, 12:14 |
| По идее можно же хранить и в аппликэйшен контексте. |
| Автор: JVM 6.5.2008, 12:46 | ||
Но тогда надо при первом обращении загружать эти данные, а при последующих запросах проверять были ли они загружены? Или можно по другому? А если список меняется в процессе работы приложения, то тогда как его обновлять? Если все же хранить в сессии то, если какие-нибудь численные показатели ограничивающие или разрешающие использовать такой подход? |
| Автор: shoura 6.5.2008, 13:42 |
| Если никак нельзя оптимизировать запрос на список данных по скорости или так уж не хочется повторять эту процедуру много раз я бы подумал о кэше ... Реализовать можно средствами движка для работы с бд (http://www.hibernate.org/hib_docs/v3/reference/en/html/performance.html#performance-cache,http://svn.apache.org/repos/asf/ibatis/trunk/java/docs/en/iBATIS-SqlMaps-2-Tutorial_en.pdf) если используется или на худой конец через http://jakarta.apache.org/jcs/getting_started/intro.html. Это даст и гибкость по сравнению с хард-кодом через аппликэйшен парамсы. А если это слишком сложное решение то стоит ли вообще овчинка выделки? |
| Автор: necromancer 6.5.2008, 14:10 |
| =) улыбнуло разговр идет об реализации кэша =) библиотек написано уйма, самому можно реализорвать быстро при желании. Хранить можно по количеству и по времени как в сесси так и в апликации (товар то для всех одинаков). Если админ изменил товар(ы) обновлять весь кэш или один его элемент. теперь немного пораскинем мозгами: загрузил товары в сессию, а админ возьми да поменяй их из другой сесси. пользователь заказал товар а его то уже и нет такого? поэтому хранить общие данные лучше или в базе или в апликации. на самом деле задумыватся о кэше нужно уже когда приложение достаточно зрелое - тогда ищутся узке места и по возможности затыкаются. |