Se utiliza para controlar la búsqueda y hacer caché
de resultados que se proporcionan al cliente con un tamaño y desplazamiento que
cumpla con los requisitos. Se utiliza un Iterator que nos ofrece una interfaz
estándar para recorrer una estructura de datos sin que nos tengamos que
preocupar por la representación interna de los datos y proporcionando a nuestro
código independencia de la estructura de los datos.
Puede ayudar a acceder a una gran lista de Transfer
Objects (patrón que representa los objetos de negocios) de manera eficiente.
Este patrón controla la funcionalidad de la ejecución de consulta y el caché de
resultados. Puede acceder directamente a un objeto de acceso a datos
(implementación del patrón Data Access Object, DAO) y almacenar los resultados
obtenidos como una colección de Transfer Objects.
Este patrón, al solicitar objetos por bloques,
proporciona una mayor flexibilidad de consulta y mejora el rendimiento de la
red.
La mayoría de las aplicaciones de la
plataforma J2EE tienen un requerimiento de búsqueda y consulta para buscar y
listar ciertos datos. En algunos casos, dichas operaciones de búsqueda y
consulta podrían traer resultados que pueden ser bastante grandes. No es
práctico devolver toda la hoja de resultados cuando los requerimientos del
cliente son moverse por los resultados, en vez de procesar el conjunto
completo.
Muchas veces el cliente sólo ve los
primeros registros que devuelve la búsqueda, y podría descargar los registros
restantes e intentar otra nueva consulta. La práctica de obtener una lista de
valores representados en un bean de entidad llamando al método ejbFind(), que devuelve una collection de objetos remotos, y luego llamar a cada bean de entidad
para obtener el valor, consume muchos recursos de red y se considera una mala
práctica.
La aplicación cliente necesita una
facilidad de consulta eficiente para evitar tener que llamar al método ejbFind() de cada bean e invocar a cada objeto remoto devuelto.
Se necesita una mecanismo de caché en la capa-servidor para
servir a los clientes que no pueden recibir y procesar el cojunto de resultados
completo.
Se puede optimizar una consulta que se ejecuta
repetidamente sobre unos datos razonablemente estáticos para proporcionar
resultados más rápidos. Esto depende de la aplicación y de la implementación de
este patrón.
Utilizar
un Value List Handler para controlar la búsqueda, hacer un caché con los
resultados, y proporcionar los resultados al cliente en una hoja de resultados
cuyo tamaño y desplazamiento cumpla los requerimientos del cliente es una de
las mejores opciones para mejorar el rendimiento
Este patrón crea un ValueListHandler para controlar la funcionalidad de la ejecución de la
consulta y el caché de resultados. El ValueListHandler accede directamente a un DAO que puede ejecutar la consulta
requerida. El ValueListHandler almacena los resultados obtenidos del DAO como una
colección de Transfer Objects. El cliente le pide
al ValueListHandler que proporcione resultados de la consulta según los
necesite.
·
Estructura (diagrama de clases)
·
Diagrama de secuencia
No hay comentarios:
Publicar un comentario