Pra fazer a persistência, voce deve passar a classe como parâmetro, pois o compilador apaga essas informações de qual classe foi especificada quando vai gerar os bitecodes (alguma coisa por aí)
daí voce chamaria mais ou menos assim:
DAO<Cliente> clienteDAO = new DAO<Cliente>
clienteDAO.salvar(Cliente.class, cli);
fazer um método que tenha algo do tipo salvar(T.class, obj); não funciona …
[quote]Pra fazer a persistência, voce deve passar a classe como parâmetro, pois o compilador apaga essas informações de qual classe foi especificada quando vai gerar os bitecodes.
[/quote]
sempre achei uma redundância apesar de entender os porques disso!
DAO<Cliente> dao = new DAO<Cliente>();
dao.salvar(Cliente.class, obj);
isso seria bem mais interessante:
DAO<Cliente> dao = new DAO<Cliente>();
dao.salvar(obj);
Pelo q eu saiba esse T é pq vc usa o HibernateDAO generico, ou seja, qdo vc chama no seu metodo a classe Pessoa.java ele substitui o T pelo Pessoa.java veja como está minha classe hibernate
public class HibernateDAO<T> implements InterfaceDAO<T> {
private Class<T> classe;
protected Session session;
}
e na classe chamaria assim:
InterfaceDAO<Aluno> alunoDAO = new HibernateDAO<Aluno>(Aluno.class, FacesContextUtil.getRequestSession());