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:
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:
Usuario.java
UsuarioDAO.java
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?
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!
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.
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.
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!