Patterns DAO e MVC

Olá, Senhores.

Tenho dúvidas em relação ao uso dos padrões DAO e MVC.

Quando modelamos um sistema em UML, geralmente não pensamos em classes DAO, Repository, etc. Pensamos apenas naquelas que pertencem a lógica de negócios, não é isso? Então, quando criamos uma classe Usuario, inserimos os estados (atributos) e os comportamentos (métodos) relevantes à lógica. Assim:

[code]public class Usuario{

private String nome;
private Boolean V;
private SeiLa oQue;

public void setNome(){}
public String getNome(){}
public String getIniciais(){}
public void destruirV(){
// sei lá
if (this.V){
this.V = false;
this.nome = “José de Ribamar”;
this.oQue.naoSeiAinda();
}
}[/code]

Só que quando utilizamos DAO (eis a dúvida) temos necessariamente de fazer os famosos JavaBeans (ou TO, ou sei lá o quê) onde não posso ter métodos dependentes da minha lógica?

Então eu deveria ter:

  1. Usuario.java
  2. UsuarioDAO.java
  3. UsuarioBean.java ou UsuarioTO.java

onde a primeira teria os estados e comportamentos pertinentes a lógica de negócios, a segunda… todo mundo já sabe, e a terceira só os atributos que serão persistidos, com seus respectivos get/set’s. É isso?

No tópico http://www.guj.com.br/posts/list/201045.java, tem um exemplo de uso de DAO’s, onde os objetos autorDAO são manipulados diretamente no tratamento de eventos de uma classe JFrame.

A dúvida sobre MVC é aqui: como entraria o controle para intermédio entre a visão e o modelo?

Obrigado pela atenção,
Victor

Pra que um TO?

Coloque os atributos na classe Usuario e os métodos de acesso nele mesmo. TO seria um padrão utilizado se você fosse, por exemplo, distribuir teus objetos. Não tem sentido criar só pra persistir.

Em relação a MVC, não sei onde surge tua dúvida. Nem sei como vc tá implementando ele. Mas DAO não tem relação com MVC. E certamente chamar ele dentro de um tratador de eventos não é uma boa opção. Isole as tuas camadas!

Falou.

colega, voce já passou por esse site?
http://www.macoratti.net/vbn_mvc.htm

as vezes uma boa imagem esclarece melhor do que algumas palavras…
http://mafiadosoftware.googlecode.com/files/_mvc.png

Tá, tirando o que falei sobre TO, você entendeu o restante sobre minha dúvida em DAO?

Na verdade, ainda não comecei nada porque ainda tenho dúvidas sobre implementação. Já li vários fóruns e, pelo o que eu vi, cada um faz do jeito que conseguiu interpretar. Nem parece que são padrões.

[quote=Der Meister]colega, voce já passou por esse site?
http://www.macoratti.net/vbn_mvc.htm

as vezes uma boa imagem esclarece melhor do que algumas palavras…
http://mafiadosoftware.googlecode.com/files/_mvc.png[/quote]

Já deu para entender bem MVC e DAO, são bem simples, mas as implementações diferentes deixam dúvidas. Não gosto muito de classes com apenas atributos e seus get/set’s, não parece OO, mas tudo o que eu vi até agora remete a isso. Em relação a MVC, eu tentei mostrar (no link acima) um uso de DAO, mas sem a estrutura de MVC (eu acho…) para extrair de alguém uma forma de usá-la no código do link mencionado.

Obrigado pela atenção,
Victor

Olha, vai me desculpar, mas o MVC que conheço é diferente. E acredito eu grande parte do pessoal também.
Bastante conteúdo sobre MVC poderá ser encontrado aqui!
Tanto teoria quanto implementação! E um pouco de Camadas, Pattern Observer, MVP e Exception’s.
Não é abordado a DAO. É falado sobre DDD. Recomendo passar por lá.
Espero ter ajudado! :wink: