Session para guardar Pedido

Qual melhor forma para quardar uma listagem de pedido em uma session ?
alias, é certo fazer isso, usando setAttribute na session ?

Estou penssando em algo assim:

// ProdutoID|Referencia
HashMap<String, HashMap<String, Produto>> pedido;
this.request.getSession().setAttribute("pedido",pedido);

o ruim é ter que ficar serializando o objeto…

Recomendaria trabalhar com EJB3.0, Stateful Session Beans.

Coincidência …
Tudo certo dc.rec1 ?
Sou o Yuri do GUJS :wink:

estava penssando em algo assim, mais a preguiça esta me matando ultimamente :evil:

[Editado]
Fiz como eu disse mesmo… sem problemas… se precisar mudar algo eu altero para EJB 3
vlw :wink:

Manter estado no servidor eh sempre um assunto delicado, pois com isso vc compromete a escalabilidade da sua aplicação.
Por isso vc soh deve usar Sessions Stateful em EJB se for realmente necessário. Caso contrario, use sempre Stateless.

Ja na web, como vc quer fazer, tbm eh recomendado que vc utilize sua sessão com cautela. Tomemos seu exemplo: se vc tiver algumas dezenas de usuarios logados, terá uma dezena de mapas de pedidos. Se esse mapa for grande, vc usará uma boa quantidade de memória do seu servidor.

Vc precisa mesmo guardar esses pedidos na session? Não bastaria apenas os ids? (nesse caso vc buscaria os produtos de novo).

Uma tecnica que eu uso muito é guardar o estado de uma pagina na propria pagina. Por ex atraves de campos hidden no html. Vc pode usar cookies tbm.

Mais uma dica sobre o uso de sessão na web: nao esqueça q o usuario usrá o “back” do browser e isso pode tornar suas paginas inconsistentes. Isso é outro motivo pra vc evitar usar a sessão para armezar estados de paginas.

Axo que nesse caso seria Sessions Stateful mesmo…
Ta ai … qual compromete mais… varias requisisoes ao banco ou manusear session ? hmmm dificil dizer

Depende. Se vc usa hibernate por ex, vc pode se aproveitar do cache que ele implementa. Imagino que outras implementações de JPA tbm usem cache.
Buscas por id no banco costumam ser muito rapidas tbm.

Infelizmente não pude usar hibernate e nem jpa nesse sistema
Banco de dados legado que ainda tenho um pouco de dificuldade por causa da quantidade de fields
claro segui os padroes DAO com DAOFactory, caso mude de ideia, usar o hibernate,
mas usei JDBC mesmo

nesse caso não sei qual seria o metodo ideal, mas vou dar uma olhada em usar como você falou
o problema que eu uso varias propriedades de cada produto no pedido…
tanto estoque, quantidade etc…
encher de select não seria muito interessante

  • o problema esta em usar DAO =/