Duvida "É errado chamar um objeto Dao pela interface GUI ?"

7 respostas
Andergt6

Bom dia galera estou trabalhando em um projeto onde tenho que carregar varios campos com informações do Banco , ex JComboBox ,JTextField . Gostaria de saber se é uma boa pratica de OO usar um Objeto DAO nos eventos dos componentes GUI ? .
No Meu FRAME eu criei um atributo do mesmo tipo da minha classe DAO para que possa usar os métodos dentro das actions, funciona mas queria saber se isso é correto !!!
Agradeço pela atenção !!! abraço !!!

7 Respostas

Adelar

olá,
isto funciona, mas não é recomendado. A interface é somente a forma de interação com o usuário, sendo que a interação com os DAO deve ser deixada para outra camada da aplicação. Para uma aplicação complexa deve-se evitar isto, pois demanda mais trabalho quando o software tiver que ser mantido. No padrão MVC ou semelhantes a interação com o DAO é feita através do modelo. A seguir é mostrada uma figura que demonstra o formato deste padrão (MVC):

um abraço.

rod

Isso parece mais com Active Record do que com MVC.

O diagrama que voce apresentou é referente a uma aplicação web e a duvida do Andergt6 é sobre uma aplicação desktop (Swing/AWT).

Andergt6, seus DAO’s devem ter somente a finalizadade de ser uma abstracao para manipulacao (insert,update,delete,select) dos dados e sim eles podem ser acessados diretamente na view.
Na minha opiniao, dependendo do tamanho do projeto, voce poderia ter uma camada com as regras de negocio ( um Service por exemplo ou caso seja necessario ate mesmo um facade ) para ser utilizado nas views da sua aplicacao.

L

Bem, não misture MVC com outros tipos de representação. O Model é todo o resto do sistema que não é View. Como DAO não lida com componentes visuais, então é Model também.

Há muito tempo não sei o que é Swing, mas acredito que o que você chama de “evento de componente da GUI”, seja aquela inner class disparada quando alguma ação da GUI ocorre, certo? Esta inner class pode ser considerada o Controller de sua aplicação. E para um Controller, está tudo bem chamar um Model (mesmo que seja DAO). Porém, é importante não inchar o Controller com muita coisa; se a única coisa que o evento faz é algum tipo de CRUD, está tudo bem chamar um DAO. Se o evento faz o CRUD e mais alguma coisa, então é interessante encapsular essa sequência de instruções num Service, chamado agora pelo evento.

Ok?

Adelar

Adelar

Adelar

olá Leonardo,
me referi às variações menos conhecidas do mvc. É no modelo que se encontram as regras de negócio. DAOs, Beans e afins se localizam nesta camada.
Em minha opinião o mvc, apesar de antigo, é o formato mais adequado às aplicações Swing.
Concordo com o segundo parágrafo. Neste caso a inner class é o controller e o Service ficaria na camada de negócio (model).

desculpe, são sei o que deu de erro no meu browser que quando editei o arquivo submeteu três mensagens diferentes :oops:

um abraço.

Andergt6

Opa valeu galera !!! Obrigado pelos toques !!! Constatei que estou no caminho certo pois estou usando dessa forma mesmo os objetos que me referi !!! Um forte abraço a todos !!

Criado 5 de dezembro de 2009
Ultima resposta 9 de dez. de 2009
Respostas 7
Participantes 4