Maison >
Java >
javaDidacticiel >
Qu'est-ce que le cache de requêtes ? Introduction à l'utilisation du cache de requêtes MyBatis
Qu'est-ce que le cache de requêtes ? Introduction à l'utilisation du cache de requêtes MyBatis
零下一度
Libérer: 2017-06-25 10:56:07
original
2482 Les gens l'ont consulté
Veuillez indiquer la source de la réimpression :
Comme mentionné précédemment : Spring+SpringMVC+MyBatis apprentissage et construction approfondis (7) - Chargement retardé de MyBatis
1.
mybatis fournit une mise en cache des requêtes pour réduire la pression sur la base de données et améliorer les performances de la base de données.
mybatis fournit un cache de premier niveau et un cache de deuxième niveau.
Le cache de premier niveau est le cache de niveau SqlSession. Lors de l'exploitation de la base de données, vous devez construire un objet sqlSession. Il existe une structure de données (HashMap) dans l'objet pour stocker les données du cache. Les zones de données de cache (HashMap) entre différentes sqlSession ne s'affectent pas.
Le cache de deuxième niveau est un cache au niveau du mappeur. Plusieurs sqlSession exploitent la même instruction SQL du mappeur. Plusieurs sqlSession peuvent partager le cache de deuxième niveau. Le cache de deuxième niveau s'étend sur sqlSession.
Pourquoi utiliser la mise en cache ?
S'il y a des données dans le cache, il n'est pas nécessaire de les obtenir à partir de la base de données, ce qui améliore considérablement les performances du système.
2. Cache de niveau 1
2.1 Principe de fonctionnement du cache de niveau 1
Lancer une requête d'informations utilisateur avec l'ID utilisateur 1 pour le la première fois, découvrez d'abord s'il y a des informations utilisateur avec l'identifiant 1 dans le cache. Sinon, interrogez les informations utilisateur dans la base de données.
Obtenez des informations utilisateur et stockez les informations utilisateur dans le cache de premier niveau.
Si sqlSession effectue une opération de validation (en effectuant une insertion, une mise à jour, une suppression), videz le cache de premier niveau dans sqlSession. Le but est de stocker les dernières informations dans le cache et d'éviter les lectures sales.
La deuxième fois qu'il est envoyé pour interroger les informations utilisateur avec l'ID utilisateur 1, découvrez d'abord s'il y a des informations utilisateur avec l'ID 1 dans le cache. S'il y en a dans le cache, obtenez les informations utilisateur directement depuis. la cache.
2.2 Test du cache niveau 1
Mybatis prend en charge le cache niveau 1 par défaut et n'a pas besoin d'être configuré dans le fichier de configuration.
Suivez les étapes du principe du cache de premier niveau ci-dessus pour tester.
est officiellement développée en intégrant mybatis et spring, et le contrôle des transactions est en service.
Une méthode de service comprend de nombreux appels de méthode Mapper.
service{
// Au démarrage de l'exécution, démarrez une transaction et créez un objet SqlSession
// Appelez la méthode mapper findUserById(1) pour la première fois
// Appelez la méthode du mappeur findUserById(1) pour la deuxième fois pour obtenir les données du cache de premier niveau
// La méthode se termine et sqlSession est fermée
>
Si vous exécutez deux appels de service pour interroger les mêmes informations utilisateur, le cache de premier niveau ne sera pas utilisé. Parce que la méthode de session se termine, la sqlSession sera fermée et le cache de premier niveau. le cache sera vidé.
3. Cache de deuxième niveau
3.1 Principe du cache de deuxième niveau
Activez d'abord le cache de deuxième niveau de mybatis.
sqlSession1 interroge les informations utilisateur avec l'ID utilisateur 1. Après avoir interrogé les informations utilisateur, il regrette que les données de la requête soient stockées dans le cache de deuxième niveau.
Si sqlSession3 exécute SQL sous le même mappeur et exécute la soumission de validation, les données dans la zone de cache de deuxième niveau sous le mappeur seront effacées.
sqlSession2 interroge les informations utilisateur avec l'ID utilisateur 1, vérifie si des données existent dans le cache et, si c'est le cas, récupère directement les données du cache.
La différence entre le cache de deuxième niveau et le cache de premier niveau : la portée du cache de deuxième niveau est plus grande et plusieurs sqlSession peuvent partager la zone de cache de deuxième niveau d'un UserMapper. UserMapper possède une zone de cache de deuxième niveau (divisée par espace de noms), et d'autres mappeurs ont également leurs propres zones de cache de deuxième niveau (divisées par espace de noms).
Chaque mappeur d'espace de noms possède une zone de cache de deuxième niveau. Si les espaces de noms de deux mappeurs sont identiques, les données obtenues par les deux mappeurs exécutant des requêtes SQL seront stockées dans la même zone de cache de deuxième niveau.
3.2 Activer le cache de deuxième niveau
Le cache de deuxième niveau de Mybatis est au niveau de la portée du mappeur En plus de définir le commutateur principal du cache de deuxième niveau dans SqlMapConfig.xml, il doit être activé. également être activé dans le cache spécifique mapper.xml niveau 2.
Ajouter le fichier de configuration principal SqlMapConfig.xml :
1
<setting name="cacheEnabled"value="true"/>
Copier après la connexion
Description
描述
允许值
默认值
cacheEnabled
对在此配置文件下的所有cache 进行全局性开/关设置。
true false
true
Valeurs autorisées
Valeur par défaut
cacheEnabled
Définissez les paramètres d'activation/désactivation globaux pour tous les caches sous ce fichier de configuration.