Duvida relacionada a MVC em aplicação WEB (Servlet/JSP)

2 respostas
F

Seguinte,
Estou fazendo alguns teste para o projeto de uma aplicação WEB e surgiram algumas dúvidas quanto ao fluxo de informações, classes de conexão e Beans.

Inicialmente, tenho a seguitne estrutura:

  • Página Html com o form com seguintes campos:
    
    _Campo texto id (oculto)
    
    _Campo texto descricao
    
    _Campo texto valorCusto
    
    _Campo texto valorVenda
    
    _Campo texto dataInclusao
    
    e action para CtrProdutos;
    
  • Servlet CtrProdutos que recebe as informações da html acima e identifica se ela tem id ou não. Caso ela tenha id o CtrProduto cria uma HashTable com os dados passando como parâmetro para o metodo update da classe ProdutoDAO que faz o update no banco, e caso ela não tenha id, o CtrProduto cria uma HashTable com os dados passando como parâmetro para o metodo insert da classe ProdutoDAO que faz o insert no banco;
    Obs.: O campo id do BD é um campo numérico de auto_incremento

  • Classe ProdutoDAO possui acesso aos SQLs que fazem a manipulação (inserção, alteração, exclusão e pesquisa) dos Produtos no BD e implementa a classe abstrata DAO.

  • Classe Produto com alguns atributos como id, descrição, valorCusto, valorVenda, dataInclusao com gets e sets e um construtor com todos os parâmetros.

-Tenho também uma classe ConnectionBens que faz a conexão com banco de dados controlando as connection abertas (Número de connection, …)

-Tenho uma classe abstrata DAO que tem dois métodos sincronizados principais: update e inserte responsáveis por executar todos os updats e inserts da aplicação. Ela também tem dois métodos abstratos chamados inserir, alterar e excluir.

Em uma dessas aulas da vida um professor disse que a class Produto que deveria ser especializada nos produtos (claro :smiley: ) teria todos os métodos de instância como gets e sets e mais os metodos de classe tipo o meu ProdutoDAO. Na verdade acho que seria a junção dos dois.

Já estudei bastante sobre MVC sendo que tenho bem definido seus conseitos. Mas agora na hora de apolicá-los estou tendo um pouco de dificuldade.
Obs.: Não estou usando nenhum tipo de framework pois gostaria de primeiramente descobrir o caminho das pedras pra depois ir simplificando (Algo tipo saber exatamente de onde vem, o que faz e pra onde vai).

Acho que isso dá pra ter uma idéia da maluquice, mas qualquer pergunta, fiquem a vontade.
Gostaria e sugestões, opiniões, críticas, resumindo, tudo o que puder ajudar a melhorar isso pra começar a aplicação já de maneira correta.

Valeu

2 Respostas

F

Olá,

suas dúvidas são bastante comuns, praticamente todo mundo que está começando a usar MVC e design pattens tem alguma destas que vc postou. :slight_smile:
Tem algumas coisas que não são referentes a MVC, por isto eu teria divídido as perguntas em múltiplos tópicos para aumentar a chances de alguém te responder com precisão.

Bom respondendo em partes:

  • Classe ProdutoDAO possui acesso aos SQLs que fazem a manipulação (inserção, alteração, exclusão e pesquisa) dos Produtos no BD e implementa a classe abstrata DAO.

  • Classe Produto com alguns atributos como id, descrição, valorCusto, valorVenda, dataInclusao com gets e sets e um construtor com todos os parâmetros.

-Tenho também uma classe ConnectionBens que faz a conexão com banco de dados controlando as connection abertas (Número de connection, …)

-Tenho uma classe abstrata DAO que tem dois métodos sincronizados principais: update e inserte responsáveis por executar todos os updats e inserts da aplicação. Ela também tem dois métodos abstratos chamados inserir, alterar e excluir.

Isto que você está fazendo, chama-se Framework de Persistência Objeto-relacional. Existem frameworks free que fazem isto muito bem, por isto eu aconselho a usá-los ao invés de criar o seu próprio. Imagino q isto já não seja mais possível, pq a aplicação já deve estar rodando…
O Hibernate é o meu preferido mas, já usei alguns outros muito bons como Top Link da Oracle e OJB da Jakarta.

Ele te disse isto pq ele está num meio acadêmico, e no na faculdade eles não usam Design Patterns para ensinar Orientação a objetos, ou pelo menos não usam os patterns mais focados em aplicações corporativas. Muitos patterns geram discussões ferrenhas sobre o fato de fugirem do paradigma de OO. Os DAOs e VOs são provavelmente os que mais geram esta discussão. È comum ouvir que um VO(Objeto apenas com metodos acessores gets/sets) não é Orientado a Objetos, pois ele não tem comportamento, apenas estado. Realmente isto é verdade se você olhar seu VO, como sendo o Objeto em si. Eu costumo dizer: “Olhe suas classes de um nível mais alto”. Na prática você continua tendo o objeto Produto, mas com algunas objetos que fazem parte dele, e que o auxiliam em tarefas específicas, como transporte de dados e manipulação de dados. No seu caso específco seriam 3 classes. A classe Produto, com a regra de negócio, chamado em inglês de Business Object. A classe ProdutoVo, que serve para transportar dados entre camadas mas, q faz parte da classes Produto. E por final a classes ProdutoDAO, que tbm é uma composição da classe Produto.

Espero não ter te confundido mais ainda :slight_smile:

F

Valeu

Era isso mesmo.

Mas decidi seguir alguns concelhos.
Estou estudando um framework para controle (Struts ou Webwork).
Hibernate para persistência.
e uma ferramenta para a VIEW.

Por enquanto estou vendo o webwork, aprendo a configurar e usar, e o velocity, onde este ultimo não está me agradando muito, pois parece que eu to apenas trocando a sintaxe que eu domino (Java/JSP) pela linguagem do framework.

Abraço,

Fabricio Giordani

Criado 2 de março de 2004
Ultima resposta 3 de mar. de 2004
Respostas 2
Participantes 2