Pessoal,
Estou utilizando a consulta em uma tela para realizacao do orçamento e toda vez que o usuario entra na tela demora mais ou menos 10 segundo para carregar
que seria a rotina abaixo mais preciso do “for”, a quantidade de registro seria mais ou menos 1043 registros…
Alguem tem alguma sugestão??
Set<Analise> analisesConsultadas = analiseService.buscarAnalisesPadraoPorMatriz(matriz);
for (Analise analise : analisesConsultadas) {
AnaliseContratada analiseContratada = new AnaliseContratada(analise);
AnaliseItem analiseItem = AnaliseItemHelper.criarAnaliseItem(
itemAtual, analiseContratada);
this.todasAnalises.add(analiseItem);
}
public class AnaliseServiceBean implements {
@SuppressWarnings("unchecked")
public Set<Analise> buscarAnalisesPadraoPorMatriz(Matriz matriz) {
StringBuffer jpql = new StringBuffer();
jpql.append("select a ");
jpql.append("from Analise a ");
jpql.append("where a.padrao = true ");
jpql.append(" and a.matriz = :matriz ");
Query query = em.createQuery(jpql.toString());
query.setParameter("matriz", matriz);
query.setHint("org.hibernate.cacheable", true);
Set<Analise> analises = new HashSet<Analise>(query.getResultList());
return analises;
}
Pessoal, a lentidao esta neste ponto : pois neste ponto que demora mais ou menos 8 segundos , segue abaixo as classes.
AnaliseItem analiseItem = AnaliseItemHelper.criarAnaliseItem(itemAtual, analiseContratada);
*****************************************************
public class AnaliseItemHelper {
public static AnaliseItem criarAnaliseItem(ItemOrcamento itemOrcamento,
AnaliseContratada analiseContratada) {
return new AnaliseItem(analiseContratada, itemOrcamento, getService()
.buscarMetodosPorEnsaioMatriz(analiseContratada.getEnsaio(),
analiseContratada.getMatriz()));
}
***********************************************************
public class ImportadorServiceBean implements ImportadorServiceLocal {
@SuppressWarnings("unchecked")
public Set<Metodo> buscarMetodosPorEnsaioMatriz(Ensaio ensaio, Matriz matriz) {
StringBuilder jpql = new StringBuilder("select a.metodo ");
jpql.append("from Analise a ");
jpql.append("where a.ensaio = :ensaio ");
jpql.append("and a.matriz = :matriz ");
Query query = em.createQuery(jpql.toString());
query.setParameter("ensaio", ensaio);
query.setParameter("matriz", matriz);
return new HashSet<Metodo>(query.getResultList());
}
Alguem tem alguma sugestao ?
Cara é realmente necessário trazer todos os arquivos? se sim só criando indice…
eu traria 100 arquivos por vez ou menos até… resolveria seu problema… ou não?
Entao a minha lista esta vindo atraves desta linha
Set<Analise> analisesConsultadas = analiseService.buscarAnalisesPadraoPorMatriz(matriz);
for (Analise analise : analisesConsultadas) {
AnaliseContratada analiseContratada = new AnaliseContratada(analise);
AnaliseItem analiseItem = AnaliseItemHelper.criarAnaliseItem(
itemAtual, analiseContratada);
this.todasAnalises.add(analiseItem);
}
Ai cada linha (1043 Registros) cada linha vai entrar no FOR , e a lentidao esta sendo provocada na linha
AnaliseItem analiseItem = AnaliseItemHelper.criarAnaliseItem(
itemAtual, analiseContratada);
Voce esta falando de trazer de 100 em 100 ate chegar ao 1043 registros.???
Não, pq assim daria no msm! o q vc pode fazer é mandar pro usuário de 100 em 100, ou seja, manda os 100 primeiros, conforme ele precise de outros, vai no banco e busca mais 100. entende?
a sua dificuldade é fazer isso?