Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(kkorsakoff @ 6.5.2008,  12:14)
По идее можно же хранить и в аппликэйшен контексте.

Но тогда надо при первом обращении загружать эти данные, а при последующих запросах проверять были ли они загружены? Или можно по другому?
А если список меняется в процессе работы приложения, то тогда как его обновлять?

Если все же хранить в сессии то, если какие-нибудь численные показатели ограничивающие или разрешающие использовать такой подход?

Автор: shoura 6.5.2008, 13:42
Если никак нельзя оптимизировать запрос на список данных по скорости или так уж не хочется повторять эту процедуру много раз smile
я бы подумал о кэше ...

Реализовать можно средствами движка для работы с бд (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
=) улыбнуло
разговр идет об реализации кэша =)
библиотек написано уйма, самому можно реализорвать быстро при желании. Хранить можно по количеству и по времени как в сесси так и в апликации (товар то для всех одинаков). 
Если админ изменил товар(ы) обновлять весь кэш или один его элемент.

теперь немного пораскинем мозгами:
загрузил товары в сессию, а админ возьми да поменяй их из другой сесси. пользователь заказал товар а его то уже и нет такого?
поэтому хранить общие данные лучше или в базе или в апликации.

на самом деле задумыватся о кэше нужно уже когда приложение достаточно зрелое - тогда ищутся узке места и по возможности затыкаются.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)