Camadas?

Olá,

Estou fazendo uma aplicação Swing com Hibernate, mas não sei ao certo como organizar meus pacotes e classes. Hoje eu tenho a seguinte estrutura

Pacote banco e dentro dela a classe BDProduto ( acesso ao banco de dados )

Pacote negocio e dentro dele a classe Produto ( minha classe de negócio )

Pacote Tela e dentro dele a classeTelaProduto ( interface com o usuário )

Me sugeriram criar uma classe para conter os actionsPerformed da classe telaProduto ( me pareceu bom )

Hoje, ao digitar o código de barras de um produto na classe telaProduto, ocorre uma verdadeira peregrinação:

TelaProduto --> Produto ( construtor com parâmetro ) --> BDProduto ( via Hibernate) --> Produto ( atribuindo as propriedades ) --> TelaProduto ( atribuindo TextField e Combos

Esta minha distribuição é adequada ??? Em cada classe eu crio uma instância de Produto ( quantos construtores sendo realizados !!! ). Não seria bom criar a classe de acesso ao banco como classe interna da classe de negócio ???

Estou ansioso por esclarecimentos e opiniões.

Obrigado,

Márcio

Está legal a sua distribuição sim.
Estou utilizando este modelo num projeto aqui.

Agora, não entendí qndo vc falou que cria Produto em casa classe???

Na verdade acho que o DAO (DBProduto) é o único cara que vai criar e te retornar um Produto.

E tbm a tela pode criar e enviar com os dados, para que o DAO o persista.

Obrigado Daniel,

Na verdade o form instancia um objeto Produto e o DAO, para retornar um produto, também tem que instanciar um objeto Produto. Eu ainda cometia um erro de passar pela classe de negócio ( instanciando outro objeto ) chamando um método do DAO ( este último eu eliminei).

Posso perguntar mais uma coisa ??

Não seria bom que este DAO fosse um Singleton ???

Abraço,

Márcio

Já estou até vendo o cv vir aqui dar um bronca em alguem. :lol:

http://www.guj.com.br/forum/viewtopic.php?t=10006

Até.

caocao,

Não entendi. Porque alguém daria bronca em alguém aqui ???

Vi a mensagem na qual ele disse que singleton não prestava. Legal, mas porque não presta ??? Vários autores ( Bruce Eckel, Joshua Bloch etc …) indicam seu uso.

Continuo pedindo ajuda para melhor desenvolver meu projeto.

Obrigado,

Márcio

Esqueci de dizer que o que me motivou a usar singleton é no sentido de otimizar o código, evitando criar instancias do meu DAO o tempo todo. Esta preocupação relamente é razoável??? Li que factory e builder podem ser uma boa opção. O que acha ???
Tenho que admintir que me baseio em autores conhecidos, mas o fato de serem conhecidos realmente não implica que tem razão em tudo.

Valeu…

marcioa1, eu falei da bronca apenas de brincadeira. :wink:

Bom, há varias discussões no forum sobre o assunto. Veja essas:
http://www.guj.com.br/forum/viewtopic.php?t=7765
http://www.guj.com.br/forum/viewtopic.php?t=5976
http://www.guj.com.br/forum/viewtopic.php?t=5256

Factory faz parte da propria definição do pattern dao. Lembro de ter lido um artigo na developerWorks sobre boas praticas para DAO então dá uma procurada lá.

Até.

cancao,

Entendi agora que era brincadeira. É que há dois dias da minha prova SCJP, meu senso de humor saiu correndo de mim, de tão nervoso que estou.

Vou dar uma olhada com calma nos links. Na verdade eu falei em DAO, mas me refeti às minhas classes de persistência que eu mesmo criei utilizando o Hibernate, ou seja, elas devem estar completamente fora do pattern DAO

Abraços,

Márcio