Maison > Java > javaDidacticiel > Tutoriel sur l'utilisation du cache de mappage XML dans le framework MyBatis de Java

Tutoriel sur l'utilisation du cache de mappage XML dans le framework MyBatis de Java

高洛峰
Libérer: 2017-01-23 11:41:26
original
1325 Les gens l'ont consulté

MyBatis comprend une fonctionnalité de mise en cache des requêtes très puissante qui peut être configurée et personnalisée très facilement. Par défaut, la mise en cache n'est pas activée. Pour activer la mise en cache secondaire, vous devez ajouter une ligne à votre fichier de mappage SQL :

<cache/>
Copier après la connexion

C'est littéralement ça. L'effet de cette simple déclaration est le suivant :
1. Toutes les instructions select du fichier d'instructions de mappage seront mises en cache.
2. Toutes les instructions d'insertion, de mise à jour et de suppression dans le fichier d'instructions de mappage actualiseront le cache.
3. Le cache utilisera l'algorithme le moins récemment utilisé (LRU, le moins récemment utilisé) pour récupérer.
4. Selon le calendrier (par exemple, pas d'intervalle de vidage, pas d'intervalle d'actualisation), le cache ne sera actualisé dans aucun ordre temporel.
5. Le cache stockera 1024 références à la collection de liste ou à l'objet (indépendamment de ce que renvoie la méthode de requête).
6. Le cache sera considéré comme un cache en lecture/écriture, ce qui signifie que la récupération des objets n'est pas partagée et peut être modifiée en toute sécurité par l'appelant sans interférer avec les modifications potentielles apportées par d'autres appelants ou threads Revise.

Toutes ces propriétés peuvent être modifiées via les propriétés de l'élément de cache. Par exemple:

<cache
 eviction="FIFO"
 flushInterval="60000"
 size="512"
 readOnly="true"/>
Copier après la connexion

Cette configuration plus avancée crée un cache FIFO, vidé toutes les 60 secondes, qui stocke 512 références à l'objet ou à la liste résultat, et l'objet renvoyé est considéré comme en lecture seule et donc modifié entre les appelants dans différents threads. Ils peuvent provoquer des conflits.
Les stratégies d'expulsion disponibles (expulsion) sont :

LRU – Les moins récemment utilisés : supprimez les objets qui n’ont pas été utilisés depuis le plus longtemps.

FIFO – Premier entré, premier sorti : supprimez les objets dans l'ordre dans lequel ils entrent dans le cache.

SOFT – Soft Reference : supprime les objets en fonction de l’état du ramasse-miettes et des règles de référence logicielle.

FAIBLE – Références faibles : supprimez les objets de manière plus agressive en fonction de l’état du ramasse-miettes et des règles de référence faibles.

La valeur par défaut est LRU.

flushInterval peut être défini sur n’importe quel entier positif et représente une période de temps raisonnable en millisecondes. La valeur par défaut n'est pas définie, c'est-à-dire qu'il n'y a pas d'intervalle d'actualisation et le cache n'est actualisé que lorsque l'instruction est appelée.
La taille (nombre de références) peut être définie sur n'importe quel entier positif, en gardant à l'esprit le nombre d'objets que vous mettez en cache et la quantité de ressources mémoire disponibles dans votre environnement. La valeur par défaut est 1024.
La propriété readOnly peut être définie sur true ou false. Un cache en lecture seule renvoie la même instance de l'objet mis en cache à tous les appelants. Ces objets ne peuvent donc pas être modifiés. Cela offre d’importants avantages en termes de performances. Un cache en lecture-écriture renvoie une copie de l'objet mis en cache (via la sérialisation). C'est plus lent, mais plus sûr, donc la valeur par défaut est false.

Utiliser la mise en cache personnalisée
En plus de ces méthodes de personnalisation de la mise en cache, vous pouvez également remplacer complètement le comportement de la mise en cache en implémentant votre propre cache ou en créant des adaptateurs pour d'autres solutions de mise en cache tierces.

<cache type=”com.domain.something.MyCustomCache”/>
Copier après la connexion

Cet exemple montre comment utiliser une implémentation de cache personnalisée. La classe spécifiée par l'attribut type doit implémenter l'interface org.mybatis.cache.Cache. Cette interface est l'une des nombreuses interfaces complexes du framework MyBatis, mais donnez-lui simplement ce qu'elle fait.

public interface Cache {
 String getId();
 int getSize();
 void putObject(Object key, Object value);
 Object getObject(Object key);
 boolean hasKey(Object key);
 Object removeObject(Object key);
 void clear();
 ReadWriteLock getReadWriteLock();
}
Copier après la connexion

Cache de référence
Peut-être qu'à un moment donné dans le futur, vous souhaiterez partager la même configuration de cache et les mêmes instances entre les espaces de noms. Dans ce cas, vous pouvez utiliser l'élément cache-ref pour référencer un autre cache.​

<cache-ref namespace=”com.someone.application.data.SomeMapper”/>
Copier après la connexion

Pour plus de tutoriels sur l'utilisation du cache de mappage XML dans le framework Java MyBatis, veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal