Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con JPA limitando resultados

Estas en el tema de Problema con JPA limitando resultados en el foro de Java en Foros del Web. Buenas, os pongo en situación. Estoy intentando mejorar el rendimiento de una web en lo que se refiere al listado, y para ello he hecho ...
  #1 (permalink)  
Antiguo 13/02/2013, 06:29
 
Fecha de Ingreso: enero-2008
Mensajes: 49
Antigüedad: 16 años, 3 meses
Puntos: 0
Problema con JPA limitando resultados

Buenas, os pongo en situación. Estoy intentando mejorar el rendimiento de una web en lo que se refiere al listado, y para ello he hecho una paginacion. El problema es que cuando pulso para que me muestre el listado por primera vez, carga todos los registros de la base datos, por lo que tarda bastante.

El sistema de paginación funciona bien, le problema es lo que he comentado que la primera consulta me obtiene todos los datos, y yo he le he especificado a JPA que solo quiero X resultados con:


Código:
Query query = em.createNamedQuery(nombre);
query.setFirstResult( primero );
query.setMaxResults( ultimo ); 
resultados = query.getResultList(
);

Las siguientes peticiones que voy haciendo si me las hace de como quiero, el problema es la primera , ¿Qué puede
estar pasando?
  #2 (permalink)  
Antiguo 13/02/2013, 14:30
Avatar de Sumerio  
Fecha de Ingreso: octubre-2009
Mensajes: 195
Antigüedad: 14 años, 6 meses
Puntos: 6
Sonrisa Respuesta: Problema con JPA limitando resultados

Hola podrias porner mas codigo, en el jsp, en el Servlet y que entidades esta referenciado, para carga de datos.
  #3 (permalink)  
Antiguo 13/02/2013, 19:14
 
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 185
Antigüedad: 12 años, 7 meses
Puntos: 29
Respuesta: Problema con JPA limitando resultados

Fíjate que en setMaxResults(), no estés poniendo el último elemento de toda la bd. Si por ejemplo quieres obtener 10 registros, desde el 25 al 35, tendrás que poner como firstResult 25, y en maxResults, 35.
__________________
www.sttorybox.com , el lugar de las historias :)
  #4 (permalink)  
Antiguo 14/02/2013, 03:33
 
Fecha de Ingreso: enero-2008
Mensajes: 49
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema con JPA limitando resultados

Gracias por las respuestas. Observando más detenidamente la aplicación me he dado cuenta que el fallo no esta ahí, y sinceramente no se donde esta.

He comprobado que le paso correctamente los parámetros a la query, y he calculado cuanto tiempo tarda la query en lanzarse y tarda sobre 2 s, que no es nada, puesto que tiene cargas EAGER en sus objetos.

El problema viene en que un momento, cuando se devuelven datos, hay algo y no se que es, que hace que se ejecuten todas las consultas. Estoy con eclipse debugeando, y es cuando ya estoy en las clases de JSF (las que no puedo ver la implementacion, pero si avanzar con el debug), donde se lanza.

Perdón por poner antes con que estoy trabajando. Estoy con myfaces+jpa+jsf.
Decir que la páginación la hago tal y como dicen aquí:

http://wiki.apache.org/myfaces/WorkingWithLargeTables


El dataTable
Código:
<t:dataTable id="tablaDetalle"
					value="#{soporteInventario.dataModel}" var="mtoSoporte"
					rows="20"	
					binding="#{soporteInventario.dataTable}"
					headerClass="tablaCabecera"
					rowClasses="filaPar, filaImpar"
					columnClasses="columnaNormalSinSalto,columnaNormal,columnaNormalSinSalto,columnaNormal,columnaBoton,columnaBoton,columnaBoton,columnaBoton,columnaBoton,columnaBoton"
					sortColumn="#{soporteInventario.sort}"
            		sortAscending="#{soporteInventario.ascendente}"       			
            		preserveSort="true"
            		
					styleClass="tabla" valuebinding="dataTable">
y el dataScroller

Código:
<t:dataScroller id="scroll_1"
				    for="tablaDetalle"
				    fastStep="10"
				    pageCountVar="pageCount"
				    pageIndexVar="pageIndex"
				    styleClass="scroller"
				    paginator="true"
				    paginatorMaxPages="9"
				    paginatorTableClass="paginator"
				    paginatorActiveColumnStyle="font-weight:bold;"
				    immediate="true" 
				    rowsCountVar="5"
				    displayedRowsCountVar="displayedRowsCountVar"
				    firstRowIndexVar="firstRowIndex"
				    lastRowIndexVar="lastRowIndex">
Edit: Acabo de descubrir, descargando algunos ficheros fuentes de jsf, que lanza las consultas cuando intenta renderizar la vista en la clase jsf, FaceletViewHandler.java

Última edición por pasteles; 14/02/2013 a las 04:45 Razón: Mas info

Etiquetas: jpa, resultados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:45.