Gostaria que saber se a solução que encontrei pode me dar dores de cabeça no futuro.
Contexto: Trata-se de um projeto Java Web desenvolvido em Eclipse. Usa JSF 2.0 (com primefaces 2.2.1), Hibernate e banco de dados PostgreSQL. Problema que eu tinha: no pacote de arquivos de consulta ao banco (dao) implementei uma classe abstrata denominada AbstractDAO. Até então, esta não é uma novidade para muitos programadores. Nesta classe implementei 2 métodos:public class AbstractDAO {
protected Session sessao;
public void salvarOuAlterar(Object object) throws Exception {
//implementacao
}
public void excluir(Object object) throws Exception {
//implementacao
}
}
public class AbstractDAO {
protected Session sessao;
public void salvarOuAlterar(Object object) throws Exception {
//implementacao
}
public void excluir(Object object) throws Exception {
//implementacao
}
public List<?> listarTodos(Class<?> classParaSerListado) throws Exception {
Transaction transaction = null;
try {
sessao = HibernateUtil.getSessionFactory().openSession();
transaction = sessao.beginTransaction();
Criteria criteria = sessao.createCriteria(classParaSerListado);
transaction.commit();
return (List<?>) criteria.list();
} catch (Exception e) {
transaction.rollback();
throw new Exception("Erro ao Pesquisar");
} finally {
// sessao.close();
}
}
}
public class TipoDePodaDAO extends AbstractDAO {
//nada aqui
}
E, por fim como ficou a classe que faz uso do método listarTodos:
// import SUPRIMIDOS
@ManagedBean
@SessionScoped
public class TipoDePodaBacking {
private TipoDePodaDAO tipoDePodaDAO = new TipoDePodaDAO();
private List<TipoDePoda> listaPesquisada;
@SuppressWarnings("unchecked")
public void listarTudo() {
try {
listaPesquisada = (List<TipoDePoda>) tipoDePodaDAO
.listarTodos(TipoDePoda.class);
} catch (Exception e) {
FacesMessage msg = new FacesMessage("Erro ao pesquisar", null);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
}
As linhas que interessam ser discutidas aqui no GUJ são as 14 e 15 deste último código fonte.
Antes eu tinha um grave problema de "cast", agora não mais.
Gostaria de saber, principalmente de quem já usou Hibernate, se poderei ter problemas neste tipo de busca, visto que ela será utilizada apenas para tabelas com poucos registros, aproximadamente 500, com acesso de, no máximo 20 usuários ao mesmo tempo.