JavaBeans e DAO em aplicações Stand-alone

6 respostas
M

Sempre tenho essas dúvidas toda vez que tenho que modelar sistemas com elementos do tipo interface Swing, BD e objetos e tabelas do tipo Usuario, Cliente, Produto, etc.

Acho que fica melhor explicar através de um exemplo, sendo assim, lá vai…

Em um sistema existe um cadastro de usuários que devem ter suas senhas validadas para conseguirem executar o programa. Para isso, os dados dos usuários são armazenados no BD na tabela ‘usuario’, a qual possui os campos ‘id’, ‘nome’ e ‘senha’.

Para utilizar (trafegar) esses dados no sistema, devo criar uma classe ‘Usuario’ (um JavaBeans… correto??) e, como toda classe desse tipo, esta terá apenas seus atributos (id, nome e senha) e seus gets e sets correspondentes.

Agora, para efetuar as operações no BD crio um DAO correspondente ‘UsuarioDAO’, o qual conterá os selects, inserts e updates e utilizará o referido JavaBeans ‘Usuario’ para armazenar os dados coletados no BD (retorno dos selects) ou ainda receber os dados do sistema para atualizar a tabela ‘usuario’ (inserts, updates e deletes).

Aqui vem a questão (ou as questões):
Quando começo a pensar nas ações e responsabilidades de cada objeto vejo que o ‘Usuario’ deve, por exemplo, acessar o sistema. Assim, onde devo criar o método correspondente?

1.) Dentro da classe Usuário? Se sim, os JavaBeans não devem conter APENAS os atributos com seus gets e sets? Ou será que esse conceito é aplicável apenas às aplicações Web (que por sinal conheço pouco)?

2.) Deixo pra interface gráfica fazer o trabalho? E a questão da responsabilidade? Não são os ‘Usuários’ que acessam o sistema?

Aguardo.

6 Respostas

mvargens

E aonde vai sua Business ai?
Esse tipo de aplicação não deveria ser diferente de uma Web. Considerando que as duas tem parte View os conceitos são semelhantes. Use uma classe UsuarioBusiness para chamar o DAO e fazer tais transações. Na view Swing vc usa essa classe Business que se encarrega por exemplo de te fornecer o javaBean (entity, pojo , etc) populado.

M

Não sei se entendi muito bem. Mas, a Business (UsuarioBusiness) conteria as ações (demais métodos) da classe Usuário?
Seria isso?

aleck

http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs :roll:

M

Muito bom o artigo!!!
Valeu!

mvargens

mdutra:
Não sei se entendi muito bem. Mas, a Business (UsuarioBusiness) conteria as ações (demais métodos) da classe Usuário?
Seria isso?

A idéia é essa, mas só quando envolve regra de negócio (Autenticação pode ser uma delas). O ideal para a parte da tela seria você criar uma classe Controladora. Como os Actions do antigo Struts.
Se quiser evitar o BO poderia colocar as funcionalidades nesta classe, mas seria uma dessas por tela, porque está diretamente ligado a view.
Regras de autenticação colocadas nessa classe não seriam reaproveitadas. Isso eu acho que fica melhor em um BO. Anemico ou não ele isola regras de negócio e isso para mim ja está de bom tamanho.
Abaixo tem um uma discução sobre os Actions da tela. Fazendo isso você evita poluir a tela swing com regras de negócio.
http://javafree.uol.com.br/topic-849942-Swing-e-MVC.html

M

Entendi.

Abaixo tem um uma discução sobre os Actions da tela. Fazendo isso você evita poluir a tela swing com regras de negócio.
http://javafree.uol.com.br/topic-849942-Swing-e-MVC.html

Esse tópico que vc passou acabou me tirando outra dúvida que tinha.
Trabalhei com códigos de interface gráfica que tinha tudo misturado, agora vi como eles deveriam ter sido implementados.

Obrigado a todos!

Criado 3 de março de 2009
Ultima resposta 4 de mar. de 2009
Respostas 6
Participantes 3