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?
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?
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.
[quote=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. [/quote]
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.
[quote=romarcio][quote=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. [/quote]
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.
[/quote]
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)
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?
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).
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
[quote=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).[/quote]
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
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.
O que são as camadas VO/TO/BO?
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: [quote]Aconselho antes a ler sobre Patterns como DAO, Repository, MVC, TO, PO, VO, DTO.[/quote]
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/