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!