Como tratar muitas informações

Bom dia.

estou com uma dúvida e gostaria de algumas opiniões.

Eu tenho um sisteminha que funcionaria como um cadastro, porém não ficará em uma única página jsp, ele andará por diversas páginas e em cada uma serão adcionadas novas informações ao cadastro. Eu preciso disso pois cada passo (página) do cadastro depende de informações do passo anterior para definir a montagem da página.

A dúvida que eu fiquei foi a seguinte: Como eu trato as informações que foram sendo informadas nas páginas anteriores? gravo no banco de dados a cada página? Ou eu vou “carregando” eles de página para página? Esse segunda opção eu considero pior, pois geraria muito trafego de informações, ao mesmo tempo que se eu gravar no banco, geraria muitos acessos ao mesmo.

O que vocês acham? Qual dessas opções é melhor, ou vocês conhecem alguma outra forma de eu fazer isso?

Bom pelo que entendi da sua duvida, você precisa criar uma rotina de cadastro onde a mesma é divida entre varias paginas, como por exemplo, aqueles cadastros gerenciados com abas, onde em cada aba você adiciona informações.

Existem algumas maneiras de fazer um cadastro desse tipo, como exemplo:

1º) Você pode gravar as informações de cada pagina direto no banco, o problema é que em um ambiente transacionado, caso o usuário não termine o cadastro por completo, você já terá gravado as informações de algumas paginas no banco, ai seira necessário que quando o usuario tente visualizar o registro ele termine o cadastro;

2º) Você pode armazenar os dados em memória, e só persistir no banco quando o usuário gravar a ultima página;

3º) Você pode usar o banco de dados para armazenar cada pagina utilizando tabelas temporarias, eu particularmente não gosto de usa-las, mas já trabalhei em projetos que usavam.

Você terá que analisar oque seria melhor no seu caso.

Flw.

Olá Raphael Carvalho, se vc usar jsf 2 ou jboss seam vc pode usar o escopo de conversação que ele se encarrega de guardar estas informações de paginas anteriores. Caso utilize jsf 1.2 existem bibliotecas de componentes que permitem armazenar informações por mais de uma requisição, o tomahawk tem o t:saveState e o richFaces tem o a4j:keepAlive.

Espero ter ajudado.

[]'s

Thiagocg: valeu pelas dicas, mas eu acho que ainda estou muito no inicio do estudo de java. Procuro soluções simples e não tão profissionais. Mas vou dar uma lida sobre o que tu falou.

cvinicius: Não chega a ser tão preocupante o caso de o usuário não completar o cadastro. O que eu penso é que tantos acessos ao banco não podem deixar o sistema um tanto lento?

Mas ideal mesmo, acho que seria mante-los na memória e gravar apenas quando o usuário der a opção salvar.

Vou dar mais uma pensada e fazer mais alguns testes aqui, depois eu volto e digo o que eu fiz.