Dao genérico ou Dao simples + IoC?

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!

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

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!

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

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