Caché MyBatis

En este tutorial vamos a aprender a usar MyBatis para configurar y personalizar un potente sistema de caché transaccional de consultas que permita mejorar el rendimiento de nuestras aplicaciones

Caché MyBatis

0. Índice de contenidos.

  1. Introducción.
  2. Caché local.
  3. Caché de segundo nivel.

1. Introducción.

El uso de la memoria caché está ligado, normalmente, a entornos en los que existen problemas de rendimiento. Su cometido es tan simple como conseguir que los datos con un índice de uso mayor se encuentre mapeados en memoria listos para su uso.

En este sentido MyBatis, framework de persistencia de java del que ya se ha hablado en este blog anteriormente, ofrece la posibilidad de configurar y personalizar un potente sistema de caché transaccional de consultas que permita mejorar el rendimiento de nuestras aplicaciones, ofreciendo para ello dos niveles distintos:

  • Una caché local se encuentra activa siempre.
  • Una caché de segundo nivel opcional.

2. Caché local.

La caché local siempre está activa y configurada por defecto para almacenar la información durante el tiempo de sesión.

Esta caché se encuentra almacenada en un miembro de una instancia de , el cuál a su vez pertenece a un objeto SqlSession y consiste en un mapa de la forma "key + value", donde:

  • key = (mybatis-namespace + nombre-consulta) + (consulta en bruto con los placeholders de los parametros) + (lista actual de parametros de la consulta)
  • value = (lista de objetos java resultantes para la consulta)

La única configuración que admite esta caché es: localCacheScope = SESSION or STATEMENT:

  • Cuando toma el valor SESSION:
    • los resultados de todas las consultas quedan almacenadas en la memoria caché
    • la memoria caché se limpia cuando:
    • Finalice una transacción (o al finalizar una consulta configurada con autoCommit=true).
    • Siempre que se realice una consulta insert/update/delete.
  • Cuando toma el valor STATEMENT:
    • los resultados quedarán almacenados solo para las consultas que se realicen.
    • la memoria caché se limpiara al finalizar cada consulta de MyBatis.

El lugar para realizar esta configuración es el fichero de configuración de mybatis y en concreto dentro de los settings:



	
		
	

	...


3. Caché de segundo nivel.

La caché de segundo nivel se configura a nivel de mapper de mybatis, por ello, para configurarlo basta con añadir la siguiente línea en un fichero mapper:


Las consecuencias de activar esta caché son:

  • Automáticamente todas las consultas que existan dentro del fichero mapper se almacenarán en caché.
  • Todas las sentencias inser, update y delete limpiarán la caché.
  • Cuando se necesite más espacio para almacenar información se utilizará un algoritmo de tipo LRU (Least Recently Used) para proceder con el desalojo.
  • No se poducirán desalojos planificados por defecto.
  • Se almacenarán 1024 referencias a listas u objetos.
  • Se tratará la caché como una cache de Lectura/Escritura, en otras palabras, objetos tomados de la caché no serán compartidos y pueden ser modificados con total seguridad.

Los parámetros de configuración que admite esta caché:

  • eviction: Establece la política de desaolojo de información de la caché. Las políticas disponibles son:
    • LRU – Least Recently Used (By default): Elimina objetos que no han sido utilizados durante un período de tiempo..
    • FIFO – First in First Out: Elimina los objetos en el orden en el que entraron.
    • SOFT – Soft Reference: Elimina los objetos basandose en el estado del recolector de basura de java y en reglas «Soft Reference».
    • WEAK – Weak Reference: Elimina los objetos basándose en el estado del recolector de basura de java y en reglas «Weak Reference».
  • flushInterval: Puede establecerse como cualquier entero positivo y representa una cantidad razonable de tiempo especificado en milisegundos. Por defecto no tiene ningún valor.
  • size: Puede establecerse como cualquier entero positivo. Hay que tener siempre en cuenta el tamaño de los objetos que se están almacenando en caché y la memoria disponible. Por defecto está establecido en 1024.
  • readOnly: Puede establecerse como true o false. Una caché de solo-lectura que devolverá siempre la misma instancia del objeto cacheado a todos los solicitantes.

Además, MyBatis permite gestores como Ehcache o Memcached se encarguen de la gestión de esta caché mediante librerías de integración.

Comentarios

4 respuestas

  1. Pingback: MyBatis con Spring Boot y Cache con Redis | adictosaltrabajo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero Técnico en Informática de Sistemas y master en Ingeniería del Software para la Web.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

02/03/2026

José Antonio Sánchez Segovia

Zephyr es un RTOS open source respaldado por la Linux Foundation que permite desarrollar dispositivos embebidos conectados, eficientes y escalables, facilitando el paso de prototipo a producto final con una arquitectura mantenible.

23/02/2026

Enrique Casado Díez

LoRa y LoRaWAN son tecnologías clave en el ecosistema IoT cuando se requiere largo alcance y bajo consumo energético. En este artículo analizamos su funcionamiento, Spreading Factor, link budget, arquitectura de red, frecuencias y clases de dispositivos, con un caso práctico real.

19/02/2026

Juan José Díaz Antuña

Copilot Chat es la forma más sencilla y segura de empezar a usar IA en Microsoft 365. En este artículo vemos cómo funciona, cómo activarlo y en qué se diferencia de Microsoft 365 Copilot, Copilot Studio y los Agentes Inteligentes, con ejemplos prácticos y una comparativa clara.