Dúvida simples sobre MVC

10 respostas
xxmayconxx

Então, se eu tenho uma classe DAO, uma página,uma Action(Struts)e uma página de saida, cada classe desa seria qual parte do mvc?

tipo, a view é a página…

como fica?

10 Respostas

E

Model - Java Bean, classe contendo um construtor sem argumentos e getters and setters, algumas pessoas podem implicar com essa definição, mas se vc achar necessário se aprofundar basta pesquisar. Num primeiro momento é o que é preciso saber.
View - o jsp
Controller - sua action

A sua DAO é chamada pelo controller, no caso pela Action.

romarcio

erfs:
Model - Java Bean, classe contendo um construtor sem argumentos e getters and setters, algumas pessoas podem implicar com essa definição, mas se vc achar necessário se aprofundar basta pesquisar. Num primeiro momento é o que é preciso saber.
View - o jsp
Controller - sua action

A sua DAO é chamada pelo controller, no caso pela Action.

O DAO faz parte do Model também.

Para o MVC, a forma usada para persistir dados não é importante. Você pode usar arquivos (txt, xml, …) ou banco de dados, para o MVC não faz diferença, ele não exige que seja de uma maneira específica.
Mas as lógicas e regras de negócios contidas nas classes com este fim, fazem parte do Model, neste caso citado o padrão DAO.
O Model não é formado apenas pelas classes de entidades ou pojos, mas também pelas regras de negócio que as envolvem.

Eduardo_Bregaida

romarcio:
erfs:
Model - Java Bean, classe contendo um construtor sem argumentos e getters and setters, algumas pessoas podem implicar com essa definição, mas se vc achar necessário se aprofundar basta pesquisar. Num primeiro momento é o que é preciso saber.
View - o jsp
Controller - sua action

A sua DAO é chamada pelo controller, no caso pela Action.

O DAO faz parte do Model também.

Para o MVC, a forma usada para persistir dados não é importante. Você pode usar arquivos (txt, xml, …) ou banco de dados, para o MVC não faz diferença, ele não exige que seja de uma maneira específica.
Mas as lógicas e regras de negócios contidas nas classes com este fim, fazem parte do Model, neste caso citado o padrão DAO.
O Model não é formado apenas pelas classes de entidades ou pojos, mas também pelas regras de negócio que as envolvem.

Faz isso não, chamar o DAO pela Action, coloca uma camada de negócio entre a DAO e a Action, assim a DAO cuida da persistencia, a Action do controle do que vem das FORMs e essa classe intermediária, poderia ser um service ou business cuida da comunicação entre a action e a DAO. 8)

gRoOve

Eu achava que o DAO iria ligado direto ao model, por exemplo para recuperar um objeto do BD, teria que chamar um método do model e esse método do model chamaria o DAO pra buscar no BD. O correto então é ter essa camada intermediária entre control e DAO, isso? Por que não chamar direto o DAO por meio do control? Qual seria a responsabilidade desta camada intermediária?

drsmachado

Existem algumas abordagens diferentes sobre o modelo MVC.
O padrão e puro, para o Struts 2 seria:

jsp - View
Action - Controller
DAO/Bean - Model

No Struts 1
jsp/Form - View
Action - Controller
DAO/Bean - Model

Porém, existem algumas diversificações, como o Eduardo sugeriu. É possível inserir outras camadas complementares, que tornam o tráfego de dados entre as camadas mais adequado, pois, cada camada fica responsável por uma ação específica.
Geralmente este modelo implementa
jsp/Bean - View (interação com o usuário)
Action - Controller 1 (Camada que cuida da view)
Service - Controller 2 (Camada que cuida da persistência)
DAO - Model 1 (Camada de persistência)
VO/TO/BO - Model 2 - Classes que permitem o tráfego de dados entre as camadas.
Neste modelo, os beans só vão da view até controller 1, todos os atributos são refletidos em objetos VO/BO/TO e transitarão utilizando DTO (data transfer objects).

douglaskd

esta abordagem estaria correta ?

View -> Controler -> DAO(getLista/set…) -> (bd/xml/txt/ws)
------------------------- classes model

DAO retorna (objetos / lista de objetos) para o controller / controller manda objetos para view, -> view imprime

a view é a recepcionista, controller é o gerente, dao é o peão, bd/xml/txt/ws é a matéria prima, e classes model, são o produto que a recepcionista irá entregar/receber

Eduardo_Bregaida

drsmachado:
Existem algumas abordagens diferentes sobre o modelo MVC.
O padrão e puro, para o Struts 2 seria:

jsp - View
Action - Controller
DAO/Bean - Model

No Struts 1
jsp/Form - View
Action - Controller
DAO/Bean - Model

Porém, existem algumas diversificações, como o Eduardo sugeriu. É possível inserir outras camadas complementares, que tornam o tráfego de dados entre as camadas mais adequado, pois, cada camada fica responsável por uma ação específica.
Geralmente este modelo implementa
jsp/Bean - View (interação com o usuário)
Action - Controller 1 (Camada que cuida da view)
Service - Controller 2 (Camada que cuida da persistência)
DAO - Model 1 (Camada de persistência)
VO/TO/BO - Model 2 - Classes que permitem o tráfego de dados entre as camadas.
Neste modelo, os beans só vão da view até controller 1, todos os atributos são refletidos em objetos VO/BO/TO e transitarão utilizando DTO (data transfer objects).

Isso mesmo, senão você acaba misturando chamada do DAO com coisas da tela com regras de negócio, tem outros patterns para ajudar nisso.

Mas está correto dizer que
Model == Beans e DAOs
Controller == Action, Managed Beans e Controller
View == JSP, XHTML

Aldeir

Não sei se te ajuda mas vamos lá…

Baseando-se no modelo MVC fiz minha própria modelagem utilizando 5 camadas distribuídas desta forma:

Camada Bean ? Camada dos objetos de negócio, responsável pelo encapsulamento dos dados.
Camada View ? Camada de apresentação visual da aplicação
Camada BO ? Camada das regras de negócio da aplicação
Camada Control ? Camada do controle de fluxo da aplicação
Camada DAO ? Camada de persistência com o banco de dados

Fazendo assim você tem um maior controle sobre sua aplicação e também fica muito mais fácil de dar manutenção em seu código.
Para que está iniciando pode se confundir com o MVC clássico.

gRoOve

O que são as camadas VO/TO/BO?

Eduardo_Bregaida

Nesse post eu deixei um link para os mais famosos Patterns que temos: http://javawora.blogspot.com/2011/12/tutorial-vraptor.html

Está localizado no início do texto:

Aconselho antes a ler sobre Patterns como DAO, Repository, MVC, TO, PO, VO, DTO.

Também conselho esses livros: http://www.livrariasaraiva.com.br/produto/1995765/use-a-cabeca-!-padroes-de-projetos-%28design-patterns%29-2-ed-revisada/
e sobre arquitetura http://www.livrariasaraiva.com.br/produto/3705598/introducao-a-arquitetura-e-design-de-software-uma-visao-sobre-a-plataforma-java/

Criado 25 de dezembro de 2011
Ultima resposta 11 de jan. de 2012
Respostas 10
Participantes 8