sábado, 19 de septiembre de 2015

APLICACIÓN DE 'EHCACHE' CON 'SPRING'


El manejo de 'Cache' en las aplicaciones y servicios es muy importante, ya que agiliza la obtención de los datos evitando estar constantemente golpéando la BD. La ventaja que proporcionan en si las 'caches' básicamente es eliminar los tiempos de acceso a un recurso externo, para recuperar los datos que se encuentran mantenidos en cache, pero hay que tener cuidado en tener claro cuando y como realizarlo, así mismo como configurarlo.

En esta oportunidad mostraré una forma de como trabajar con una de las librerías open source más conocidas para el manejo del 'cache' que es 'Ehcache'. Esta librería posee un principio básico que es dividir la caché en diversas 'regiones' configurables donde se ubican los objetos.

Sus características principales son:

  • Rápido y simple de usar.
  • Pequeño (menos de 700 kb) y con pocas dependencias.
  • Escalable: permite, por un lado, escribir a disco y, por otro, trabajar con muchos caches en paralelo.
  • Flexible: permite trabajar con Objects o Serializables y configurarlo mediante xml o programaticamente.
  • Extensible: se pueden adicionar plug-ins, loaders, listeners, JMX y exceptions handlers. Trabaja con varias APIs como JTA o frameworks como Hibernate.
  • Distribuído: posee muchas opciones de replicación de los datos.
El propósito de este post es mostrar de froma detallada su integración con 'Spring', configuración y aplicación, mediante un dummy.

Las librerias requeridas para desarrollar este dummy son las siguientes:



Es necesario que desde 'Spring' se maneje un archivo de configuración exclusivo para 'EhCache' (applicationCache.xml):



Así mismo 'EhCache' maneja un archivo 'xml' referenciado desde 'applicationCache.xml', en donde maneja toda la configuración personalizada del cache, para cada escenario donde se desee aplicar:



Se debe de tener muy claro el significado de la definición de cada propiedad que se maneja. Aquí el detalle de cada una de ellas:



La prueba del 'dummy' la realizaremos mediante una clase main, que levantará el contexto de 'Spring' y ejecutará 2 metodos de prueba (estos trabajan independientes, se puede comentar y probar el que desee):



Metodo#1: Simulación del consumo de DB (1 vez), luego se obtendrá del 'EhCache' el mismo dato durante '10' seg. Despues golpeará la BD otra vez:


El resultado de la prueba es que al ejecutar en un tiempo de 20 segundos, solo se ha obtenido de BD (simulada) la 1ra fecha (2015/09/19 09:33:17) y como ven la hora se mantiene ya que las demás consultas son obtenidas del 'EhCache' configurado, para que mantenga la información por 10 segundos, poteriormente a ellos volvera a actualizar la información con la BD:



Metodo#2: Simulación del consumo de DB (1 vez), luego se obtendrá del 'EhCache' el mismo dato durante '10' seg. Despues golpeará la BD otra vez y se iran agregando 5 registros a la lista anterior existente:



El resultado de la prueba es que al ejecutar en un tiempo de 20 segundos, solo se ha obtenido de BD (simulada) la 1ra lista de Mensajes con una cantidad de registros de 5 y como ven la hora se mantiene ya que las demás consultas son obtenidas del 'EhCache' configurado, para que mantenga la información por 10 segundos, poteriormente a ese tiempo volvera a actualizar la información con la BD y como se aprecia la lista ahora devuelve 10 registros, ya que existe una simulación que cada 10 segundos se le agregarán 5 registros (por efecto de la prueba respectiva):



Para los interesados las fuentes se pueden descargar aquí: http://www.mediafire.com/download/aasn2aysfu2aoyi/Dummy_Spring_EhCache.zip


No hay comentarios: