Duvida em como proceder no acesso ao banco de dados.  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
BLV-DOOM JAVA
JavaBaby
[Avatar]
Membro desde: 28/06/2009 14:53:09
Mensagens: 81
Localização: São Paulo
Offline

Ola pessoal.
Estou desenvolvendo um pequeno sisteminha de CRUD para entregar na faculdade no qual estou utilizando JSF (informação irrelevante mas que pode ajudar), e tenho uma duvida séria em quanto o padrão MVC.
Primeiro vou postar o código das minhas classes Dao e Model:

Classe: ClienteModel


Classe: ClienteDao


Agora a minha duvida:
Como posso implementar a minha classe control?
Pois vejam só o meu drama:
Na faculdade o professor falou que o correto é:
view ---> control ---> model ---> dao
ou seja:
view chama a classe control, control chama model e model chama dao.
OK!
Agora preciso saber se numa arquitetura para Web eu teria que tratar minhas exceções de banco (os throws que vcs vêem nas assinaturas dos métodos)
na classe DAO, na Model ou no Control.

Pois como utilizarei JSF não sei como organizar minha arquitetura, pois fico sem saber como determinar meus Managed Beans.

Por favor me ajudem nesta duvida!
Obs: Eu não tenho essa duvida esclusivamente para Web, mas também para Swing. É uma duvida que esta me matando!

Vlw!

É um sufoco aprender JAVA, mais ao mesmo tempo é muito bom!!!
[Email] [MSN]
AndreMendes
JavaChild
[Avatar]

Membro desde: 23/09/2009 02:37:07
Mensagens: 129
Offline


Agora preciso saber se numa arquitetura para Web eu teria que tratar minhas exceções de banco (os throws que vcs vêem nas assinaturas dos métodos)
na classe DAO, na Model ou no Control.


Olha, sou iniciante, mas acho que as exeções, no seu caso, devem ser tratadas na camada de controle e ali mesmo remanejar o usuario para o caminho certo de acordo com a exceção ...
Me corrijam se eu estiver errado, asssim também aprendo
Abraços

André Mendes Duarte
Bacharelando em Ciência da Computação na Universidade Do Estado de Santa Catarina
luizSC
JavaBaby

Membro desde: 29/07/2010 19:10:45
Mensagens: 76
Offline

BLV-DOOM JAVA wrote:Ola pessoal.
Na faculdade o professor falou que o correto é:
view ---> control ---> model ---> dao


Penso que o MVC é:
--------v i e w<--- ---> model[ ---> dao ]
--------|---- ^--------_-----^
--------|-----|-----_---------|
--------|_control_______|

A função do control é prover a navegação entre as views e delegar para o modelo as entradas/ações do usuário, sem criar acoplamento entre os eles.

Observe que o DAO não faz parte do padrão (explicitamente). Senão seria MVCD

As exceções que seu DAO lança (SQLException, ClassNotFound....) provavelmente não são exceções do domínio do usuário do sistema e portanto, deveriam ser tratadas no modelo e se for o caso, transformadas numa exceção com mensagem adequada ao usuário e relançada para a view.

Abraços

This message was edited 2 times. Last update was at 04/09/2010 21:42:43

asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1669
Localização: São Paulo
Offline

Na verdade, a confusão aqui é : DAO faz parte do modelo? Resposta: SIM!

O modelo é tudo que será , no contexto da camada, agnóstico quanto ao método como foi invocado. Por isso existe o controlador: para enviar a requisição para o modelo , e este não se preocupará em como foi chamado.

Agora, quanto ao seu problema... eu percebí uma grande tendência de seguir Anemic Domain Model, aí. O jeito mais interessante de fazer isso seria, na verdade, você embutir alguma lógica de processamento dentro da própria entidade (segundo esta referência). Como, talvez pra você, isso não seja interessante, uma alternativa seria a criação de uma Fachada para que você possa descobrir, a partir da fachada, o que é mais interessante em cada caso, seja ele Create, Retrieve, Update ou Delete (não, isso não é tarefa do controlador).

[]´s

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey+Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Precisa de uma ferramenta boa para web services, mas está cansado das ferramentas tradicionais? #Banshee

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team