Caros colegas estou estou desenvolvendo um projeto um pouco mais complexo do que o normal e criei algumas classes bases, porém na parte de consulta estou percebendo uma demora excessiva do Hibernate para consultar o banco (cerca de 5000 linhas) e gostaria de saber se está faltando alguma configuraçào ou é assim mesmo.
public List<T> listaCompleta() {
Query q=getEntityManager().createQuery("SELECT e FROM fatd e");
return q.getResultList();
}
O Hibernate faz milhoes de consultas ao banco e depois alguns minutos é que ele retorna…
se voce esta apenas testando essa query, é possivel que voce esteja vendo tambem ai o log de bootstrap de uma sessionfactory. depois que o hibernate “sobe”, tudo vai ser mais rapido. experimente rodar mais de uma query durante a mesma execucacao de jvm.
Amigos, de ante mão gostaria de agradecer pelas respostas, mas vamos lá:
Minhas entidades têm muitos relacionamentos e nào defini o fetch delas, deixando a critério standart
Eu estou com o log ativado, mas a quantidade de query feitas é muito… grande… independente dele…
Nào estou confundindo com as informações de quando o hibernate levanta, pois estou usando Spring também e ele levanta depois, e ainda eu estou limpando os logs após o levantamento e deixando apenas para a consulta…
Acredito que talvez tenha alguma configuração, porém acho muito lento…
Aguardo
Coloque também o mapeamento de sua entidade que ta com problema de lentidão (não esqueça de usar as tags “code” para facilitar a visualização do código)
Você pode fazer outro teste: coloque lazy como “true” e coloque o fetch para “join” e veja o que acontece.
Bem, cerca de 5 mil objetos de uma só vez acredito que seja desnecessário, tente paginar suas consultas, 30 por vez, por exemplo. O ganho de desempenho nesse caso é absurdo, sem contar na estabilidade, ou seja, por mais dados que sua tabela receba, na hora em que a query for executada ela permanecerá sempre com um tempo de resposta constante.
Se for necessário obter médias, somas e etc dentre esses 5000 objetos, utilize querys especificas do JPA/Hibernate para isso.
Já paginei por 20 e melhorou o desempenho… porém durante a passagem de páginas apareceu o erro de Lazy inicialization do hibernate, apesar de eu ter colocado o filtro no web.xml para que nào aparecesse…