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 !!!
Duvida "É errado chamar um objeto Dao pela interface GUI ?"
7 Respostas
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.
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.
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?
…
…
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.
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 !!