Melhorar Performace de consulta

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?