--- title: 'JCache' --- JCache === Guía de desarrollo y utilizacion === * **Coordinador Tecnológico:** Rafael Palau * **Arquitecto:** Marcelo Lopez * **Consultores:** Marcos Benítez Julio Melo ## Introducción Esta guia describe los pasos para la utilizacion de Cache en las clases y una arquitectura de esta implementacion. ## Objetivo * Introducir al desarrallador en los conceptos de cache * Introduccion de arquitectura de cache * Conceptos de NearCache * Incorporacion de Redis Pub/Sub (nearcache with notifications) * Ejemplo y caso de uso. ## Anotaciones Para poder utilizar el cache se debe utilizar la siguiente anotacion: - NearCache ## Configuracion de Cache Para la configuracion del cache o extensiones adicionales sobre el mismo se pueden utilizar las siguientes opciones: - [x] ttl, esta opcion determina cual es el vencimiento del cache en minutos. - [x] cacheName, permite sobreescribir el nombre del cache. ## Caso de uso Para la utilizacion del cache se muestra el siguiente ejemplo: ```java= package py.gov.siare.ejemplo; import py.gov.siare.siarecommon.annotation.NearCache; import py.gov.siare.siarecommon.annotation.ExcludeCache; @Component public class FooComponent { @NearCache(ttl = 10) public List<Foo> getFoos(String target) { List<Foo> foos = svc.getFoos(target); return foos; } @NearCache(ttl = 5, cacheName= "other") public List<Foo> getFoos(String target, Boolean enabled) { List<Foo> foos = svc.getFoos(target, enabled); return foos; } @NearCache(ttl=10) public List<Foo> getFoos(String target, Boolean enabled, @ExcludeCache() Boolean generado) { List<Foo> foos = svc.getFoos(target, enabled); return foos; } } ``` En el ejemplo anterior se muestra la utilizacion del cache con los siguientes atributos: - Metodo getFoos(String target), ejecuta el cache y retiene los datos del mismo por **10 minutos**. - Metodo getFoos(String target, Boolean enabled), ejecuta el cache y retiene los datos por 5 minutos y sobreescribe el nombre del cache. ## Utilizacion de sobreescritura de nombre de cache Se recomienda la sobreescritura del nombre del cache en los casos en que se sobrecargen los metodos como es el caso del ejemplo. ## Excluir parametros de cache Para poder explir parametros que son usados para el calculo del hash, se debe utilizar la anotacion @ExcludeCache.