MyBatis contiene una función de caché de consulta muy potente que se puede configurar y personalizarse muy fácilmente. Por defecto, Cache no está habilitado. Para habilitar el caché de nivel 2, debe agregar una línea a su archivo de asignación SQL:
<cache/>
Eso es literalmente. El efecto de esta declaración simple es el siguiente:
1. Todas las declaraciones de selección en el archivo de la declaración de asignación se almacenarán en caché.
2. Mapee todo lo que inserte, actualice y elimine las declaraciones en el archivo de instrucción actualizará el caché.
3. El caché se volverá a jugar con el algoritmo menos utilizado recientemente (LRU, el menos recientemente usado).
4. Según el horario (como sin intervalo de descarga, sin intervalo de actualización), el caché no se actualizará en ningún orden cronológico.
5. El caché almacena 1024 referencias a una colección u objeto de lista (independientemente de lo que devuelva el método de consulta).
6. El caché se considerará un caché de lectura/escritura (legible/escritura), lo que significa que la recuperación de objetos no se comparte y puede ser modificada de manera segura por la persona que llama sin interferir con modificaciones potenciales hechas por otras personas que llaman o hilos.
Todas estas propiedades pueden modificarse por las propiedades de los elementos de caché. Por ejemplo:
<Cache Eviction = "FIFO" FLUSHINTERVAL = "60000" size = "512" readonly = "true"/>
Esta configuración más avanzada crea un caché FIFO y actualiza cada 60 segundos, almacenando 512 referencias al objeto o lista de resultados, y el objeto devuelto se considera de solo lectura, por lo que modificarlas entre las personas que llaman en diferentes hilos resulta en conflictos.
Las estrategias de recuperación disponibles son:
El valor predeterminado es LRU.
FlushInterval se puede establecer en cualquier entero positivo, y representan un período de tiempo de milisegundos razonable. El valor predeterminado no está establecido, es decir, no hay intervalo de actualización, y el caché se actualiza solo cuando se llama a la declaración.
El tamaño (número de referencias) se puede establecer en cualquier entero positivo, recordando la cantidad de objetos que almacena en caché y la cantidad de recursos de memoria disponibles en su entorno de ejecución. El valor predeterminado es 1024.
La propiedad Readonly se puede establecer en True o False. Un caché de solo lectura devuelve la misma instancia del objeto de caché a todas las personas que llaman. Por lo tanto, estos objetos no pueden modificarse. Esto proporciona importantes ventajas de rendimiento. Un caché legible y escritable devuelve una copia del objeto de caché (por serialización). Esto será más lento, pero seguro, por lo que es falso de forma predeterminada.
Uso de caché personalizado
Además de estos métodos de caché personalizados, también puede anular por completo el comportamiento de la memoria caché implementando su propio caché o creando adaptadores para otros escenarios de caché de terceros.
<cache type = ”com.domain.something.mycustomcache”/>
Este ejemplo muestra cómo usar una implementación de caché personalizado. La clase especificada por el atributo de tipo debe implementar la interfaz org.mybatis.cache.cache. Esta interfaz es una de las muchas interfaces complejas en el marco MyBatis, pero está bien simplemente darle lo que hace.
Public Interface Cache {String getId (); int getsize (); void putObject (clave de objeto, valor de objeto); Objeto getObject (clave de objeto); Boolean Haskey (clave de objeto); Objeto removeObject (clave de objeto); nulo claro (); ReadWriteLock getReadwriteLock (); } Caché de referencia
Tal vez en algún momento en el futuro, querrás compartir la misma configuración de caché y instancias en el espacio de nombres. En este caso, puede usar el elemento Cache-Ref para hacer referencia a otro caché.
<Cache-ref namespace = ”com.someone.application.data.somEmapper”/>