atom feed31 messages in net.java.dev.cejug.discussao[CEJUG] Re: DAO generico vale a pena?
FromSent OnAttachments
Jean Jorge MichelJun 7, 2011 5:59 pm 
Leandro CostaJun 7, 2011 6:05 pm 
Rafael SantiagoJun 7, 2011 9:19 pm 
Leonardo RuosoJun 8, 2011 3:29 am 
Leonardo RuosoJun 8, 2011 3:40 am 
Wendel CabralJun 8, 2011 4:20 am 
Hildeberto MendonçaJun 8, 2011 4:22 am 
Leandro CostaJun 8, 2011 4:35 am 
Hildeberto MendonçaJun 8, 2011 4:47 am 
Assis JúniorJun 8, 2011 4:50 am 
Leandro CostaJun 8, 2011 4:52 am 
Jean Jorge MichelJun 8, 2011 5:00 am 
Jean Jorge MichelJun 8, 2011 5:12 am 
Petit xDJun 8, 2011 5:18 am 
Rafael PonteJun 8, 2011 5:19 am 
Rafael PonteJun 8, 2011 5:24 am 
Hildeberto MendonçaJun 8, 2011 5:34 am 
Julio ViegasJun 8, 2011 5:41 am 
Guilherme BahiaJun 8, 2011 5:49 am.gif
Jean Jorge MichelJun 8, 2011 5:52 am 
Jean Jorge MichelJun 8, 2011 6:03 am 
Assis JúniorJun 8, 2011 10:09 am 
Jean Jorge MichelJun 10, 2011 9:15 am 
Leonardo RuosoJun 10, 2011 10:32 am 
Leonardo RuosoJun 10, 2011 10:36 am 
MesiasJun 10, 2011 12:16 pm 
Leonardo RuosoJun 10, 2011 12:34 pm 
Assis JúniorJun 10, 2011 2:01 pm 
Assis JúniorJun 10, 2011 2:03 pm 
Ivan AguirreJun 10, 2011 4:44 pm 
Jose MoisesJun 10, 2011 6:32 pm 
Subject:[CEJUG] Re: DAO generico vale a pena?
From:Assis Júnior (assi@gmail.com)
Date:Jun 8, 2011 10:09:19 am
List:net.java.dev.cejug.discussao

O Júlio Viegas falou muito bem, acima.

Complementando:

1. Faça um código simples e com testes automatizados. 2. Refatore constantemente. 3. Os padrões de projeto aparecerão sem você se preocupar. Caso veja que um padrão se encaixa melhor que outro na solução refatore e teste. 4. Se você ainda acha que algo *deve *mudar, refatore e teste mais um pouco. 5. No final seu código deverá ser o mais adaptado a sua situação.

Cada caso é um caso. Os padrões devem ser usados para resolver problemas reais e cada padrão tem seu modo de uso. Usar um padrão em um local não adequado traz
'cheiros<http://books.google.com.br/books?id=zPdb4QJKBtkC&pg=PA70&lpg=PA70&dq=martin+fowler+cheiros&source=bl&ots=e2q9sinoh3&sig=874ghKWA35oFnuZGd5122MkL8KQ&hl=pt-BR&ei=t6vvTdzwMYnrgQfXtMGUDw&sa=X&oi=book_result&ct=result&resnum=2&ved=0CCEQ6AEwAQ#v=onepage&q=martin%20fowler%20cheiros&f=false>' que podem indicar onde melhorar/refatorar. A dica acima do Rafael Ponte sobre testes é muito útil. Em se tratando de software testes automatizados e refactor constantes são o melhor investimento.

Em 8 de junho de 2011 09:42, Julio Viegas <juli@julioviegas.com>escreveu:

Como "regra", costumo usar interfaces para os casos onde ha mais de uma origem de dados. E sao raros.

Eu procuro trabalhar com "design emergente" em situacoes onde nao ha boa compreensao do problema, ou seja, abstrair/compor apenas quando ha mais de uma situacao semelhante. Eh possivel aplicar herança nesses casos via refactoring, ou seja, vc pode descobrir comportamentos em comum que podem ser centralizados em uma classe pai apos repetir uma mesma situacao. O risco disso eh amarrar seu desenho a um padrao que nem sempre vai atender todos os casos(filhos). Quanto maior a quantidade de especializacoes de uma mesma classe, mais esse problema pode se tornar visivel. Heranca cobra o preco de vc especificar um desenho e comportamento padrao que atenda todas as classes herdadas.

Se vc nao tem uma boa visao do seu problema, use design emergente. O preco disso eh ter que alterar o desenho ao decorrer da implementacao, o que nao eh ruim. Senao, use o design first.

O mais importante antes de tudo: entenda bem seu problema e qual o nivel seguro de suposicoes vc pode assumir ao desenhar e implementar o comportamento do seu codigo.

Enfim, minha resposta estah no primeiro paragrafo... :)

Abs, JV -- julioviegas.com

2011/6/8 Rafael Ponte <rpo@gmail.com>:

Se tua aplicação possui muitos CRUDs a serem desenvolvidos provavelmente o uso de um DAO generico ajude, ou melhor, se você estiver utilizando JPA/Hibernate provavelmente o uso de um Service generico (ou qualquer outro nome que você queira dar) é uma opção mais apropriada. Vale salientar que um DAO generico só te ajudará para os casos de CRUDs, qualquer outro caso eu nem me arriscaria a estender/implementar algo generico.

Independente de você utilizar DAO/Service generico ou não, dedique um esforço para os testes automatizados, com certeza eles agregarão mais valor do que chegar a solução ideal para um componente generico de CRUD :-)

No mais, tome cuidado com o excesso de DAOs na tua aplicação! 2011/6/7 Jean Jorge Michel <jean@gmail.com>

Boa noite pessoal. Queria saber dos amigos se vcs acham vantagem ter um DAO generico ao invés de DAOs para casa classe do sistema. Deixa eu ver se me faço entender. Hoje estou vendo um sistema onde TUDO é genérico. Ok, pode ser válido. Mas ai vem aquela pergunta: e o ovo, veio antes ou depois da galinha? Quando temos um DAO genérico e queremos algumas ações específicas para uma classe? Aqui foi feito um DAO para a classe X que estende o genérico e tal.... mas quase toda a classe tem sua peculiaridade, então são muitos DAOs estendendo o genérico. A Caelum no seu blog fala em interfaces para restringir o DAO genérico. Aí teremos um uma interface do DAO genérico > a implementação do DAO genérico > a Interface de restrição > o DAO que estende o genérico e implementa a interface. Ufa. Se eu vou ter isso para 30 classes eu posso economizar 30 interfaces não tendo esse DAO genérico. Queria o conselho, a experiência dos amigos sobre o assunto. Pela atenção obrigado.

* Sent from my cellphone, please forgive the lack of accents and punctuation marks ;) My blogs: http://www.jeanjmichel.blogspot.com and http://www.anonymousbiker.wordpress.com My Twitter: http://twitter.com/jeanjmichel