Dao genérico ou Dao simples + IoC?

3 respostas
danielbussade

Olá pessoal procurando na internet sobre Dao’s genéricos achei dentre outros estes links aqui:


http://www.urubatan.com.br/dao-generico-um-exemplo-a-pedidos/

Achei interessante a forma como implementaram o Dao genérico, mais a única desvantagem que enxerguei ao se usar um Dao generico, é que você não tem como usar um Ioc(Inversão de Controle) visto que os genericos e so em tempo de compilação.

Então acho ruim fazer algo do tipo:

interface Dao<T>
GenericJPADao<T> implements Dao<T>{}
ClienteAction extends BaseAction{

public final String save(){
  Dao<Cliente> dao=new GenericJPADao<Cliente>(Cliente.class); //Criando acoplamento demais
  dao.save(cliente);

 //etc..
}
}

Amanhã ou depois se quisesse mudar a camada de persistência toda para Hibernate puro, e não JPA+ hibernate, teria que mudar todas as chamadas new GenericJPADao para GenericHibernateDao, ao contrario de usando um Dao para cada classe usando Ioc, a unica coisa que faria era:

Mudar isso:

ioc(clienteDao,ClienteJPADao.class);

Para:

ioc(clienteDao,ClienteHibernateDao.class);

Então deixa uma pergunta para vocês, alguém que usa os Dao’s genericos, vale apena tirar a abstração para se ter um DaoGenerico, que funciona para todas as classes, ou ainda é melhor ter uma claseDao para cada model, que precise persistir?

O que vocês tem usado atualmente?

Obrigado!

3 Respostas

peczenyj

Vc pode ter dao simples que utiliza um dao generico por composição.

danielbussade

E até interessante, isso que você falou, agora me diga isso não é uma forma usual neh? O que o pessoal tem usado mais? O que acho desvantajoso no dao simples, é ter as vezes um dao sendo apenas um CRUD simples e mesmo assim ter que criar uma classe sem necessidade.

Mas vou avaliar sua sugestão, obrigado!

J

Aqui existe um ótimo exemplo de dao genérico com IOC e Generics.

http://www.ibm.com/developerworks/java/library/j-genericdao.html

Criado 26 de abril de 2009
Ultima resposta 27 de abr. de 2009
Respostas 3
Participantes 3