
¿Que és lazy loading? pues traduciendolo a mi manera en español podria referirse a carga ociosa, es decir carga ociosa de datos. ¿para que se utiliza? sucede que cuando se utiliza un dataTable con JSF siempre se le envia la lista completa de registros que se obtienen de una busqueda en la base de datos y los carga todos de una vez en la tabla para usarlos con un paginador, ¿pero que sucede si tenemos una busqueda de miles de registros? no podemos carga toda esa lista en el dataTable, entonces surge la necesidad de solo traer que necesitamos ver en el paginador por bloques.
Algunos diran que ya existe un articulo en la documentación oficial de ICEfaces para realizar un lazy loading, pero el punto es que es muy dificil de entender ya que agregan otras funcionalidades que estan demas y mi objetivo es simplificar el entendimiento de la técnica.
En esta ocasión utilizare netbeans, tomcat y spring para el acceso a datos.
Utilizare tambien la tabla "Manufacturer" de la base de datos derby "Sample" embebida en netbeans, ya que es la unica que tiene algunos cuantos registros para efectos de prueba.
Luego la implementación
Luego creo mi configuracion en spring
Ahora la parte fundamental es crear un custom DataModel
Ahora me dedico a crear los managed beans.
Por ultimo el diseño de la página xhtml
El resultado sera el siguiente
A través del trace se puede observar que por cada vez que se cambia de pagina se obtiene el bloque de registros que interesa.
Adjunto el
codigo fuente para efectos de estudio.