Pessoal,
Procurei por vários posts sobre padrões de projeto, DAO, VO, DTO, e vários xO da vida, e
tentando entender exatamente como isso ia ficar dentro do MVC. Gostaria que me corrigissem
o que eu entendi.
Num caso de uso simples, numa webapp, o usuário digitar uma data num campo, se ouver msg com essa dara listar numa página
e caso não haja retorne para uma página de erro qualquer.
-
submit com a data
-
Começar a fazer a validação (data inválida)
-
Dados do banco (usuário, senha, host…)
-
Abrir conexão com o banco
-
Montar a consulta
-
Executar consulta no banco
-
Aonde guardar a resposta do banco (ResultSet)
-
Dependendo do resultado da resposta redirecionar o usuário para erro.jsp ou menu.jsp
O item 1 vai ser uma página simples, associada a um controlador.
Tendo uma pequena validação de campo vazio e talvez já uma validação de data invalida.
O item 2 deve ser feita no controlador ou na hora da consulta? Acredito que na hora da consulta (DAO), já que a consulta
talvez seja chamada outro dia quem sabe por outro método.
O item 3 eu acho interessante ficar num arquivo fora dos códigos fontes, caso haja uma migração de BD
ou troca de senha de usuário não tenha que recompilar.
Apesar de ter o nome do usuário e senha num arquivo texto comum ser um pouco exposto.
O item 4 deveria ser uma classe singleton?
Eu já ouvi dizer que numa webapp cada usuário ter um objeto de conexão ser uma coisa boa, mas na minha empresa tem dois
Bancos distintos em máquinas distintas, e acho que não é uma boa.
Qual o melhor maneira de passar o objeto de conexão para os DAOS?
O item 5 e 6 estão dentro do DAO. Eu devo fazer um DAO para cada tabela e para cada join que eu tenho na minha aplicação?
No item 7, eu devo pegar o resultSet, dentro do DAO ainda, e construir um ArrayList de VO, e retornar para quem o chamou.
Dentro do controlador, eu faço a decisão do item 8.
Isso tudo que envolve DAO, VO é considerado que parte do sistema? Meu layer de modelagem?
Caso alguém tenha algo bem simples desse jeito e puder me mostrar, envie para ovictorpinto[arroba]gmail.com