Heim > Java > javaLernprogramm > Hauptteil

Vertiefendes Verständnis des Second-Level-Cache von Mybatis

高洛峰
Freigeben: 2017-01-23 09:35:03
Original
1438 Leute haben es durchsucht

Im vorherigen Artikel haben Sie den Cache der ersten Ebene von mybatis kennengelernt.

Im Vergleich zum Cache der ersten Ebene hat der Cache der zweiten Ebene einen größeren Umfang und kann von mehreren SqlSession gemeinsam genutzt werden.

In ähnlicher Weise sucht SQL beim Senden derselben Abfrage zuerst im Cache danach und fragt dann die Datenbank ab, wenn sie nicht gefunden werden kann.

Jeder Namespace-Mapper verfügt über einen eigenen Cache-Speicherplatz.

Wenn die Namespaces der beiden Mapper gleich sind, werden die durch Ausführen des Mappers abgefragten Daten im selben Cache der zweiten Ebene gespeichert.

Ähnlich gilt, wenn eine sqlSession ein Commit ausführt Der Cache der zweiten Ebene wird geleert.

Konfigurationsdatei (standardmäßig ohne Konfiguration aktiviert):

in sqlMapConfig.xml:

<setting name="cacheEnabled" value="true"/>
Nach dem Login kopieren

in der entsprechenden Mapper.xml:

Wenn Sie den Second-Level-Cache nicht benötigen, können Sie den Second-Level-Cache in den Einstellungen deaktivieren

<select useCache="false"></select>
Nach dem Login kopieren

Auf diese Weise werden jedes Mal alle aus der Datenbank gelesen

Nach dem Ausführen von Einfügen, Aktualisieren, Löschen wird der Cache aktualisiert (Cache leeren). , Sie können festlegen, dass die Aktualisierung nicht erfolgt

Im Allgemeinen nicht eingestellt, die Einstellung kann zu fehlerhaftem Lesen führen.

<insert flushCache="false"></insert>
Nach dem Login kopieren

Kleines Beispiel:

SqlSession session1 = factory.openSession();
   SqlSession session2 = factory.openSession();
   SqlSession session3 = factory.openSession();
   UserMapper mapper1 = session1.getMapper(UserMapper.class);
   UserMapper mapper2 = session2.getMapper(UserMapper.class);
   UserMapper mapper3 = session3.getMapper(UserMapper.class);
   //第一次请求,查询id为1的用户
   User user1 = mapper1.findUserById(1);
   System.out.println(user1);
   //close 将数据写入二级缓存
   session1.close();
   //清空二级缓存,UserMapper下的
   user1.setUsername("mmm");
   mapper3.updateUser(user1);
   session3.commit();
   //第二次查询会从缓存中找
   User user2 = mapper2.findUserById(1);
   System.out.println(user2);
   session2.close();
Nach dem Login kopieren

Beachten Sie die hier zwischenzuspeichernden Objekte. Die Serilisierbare Schnittstelle muss implementiert werden, da diese zwischengespeicherten Daten möglicherweise deserialisiert und auf die Festplatte oder anderswo geschrieben werden.

Das Obige ist der vom Herausgeber eingeführte Mybatis-Cache der zweiten Ebene. Ich hoffe, er wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!

Für ein tieferes Verständnis der Artikel zum Second-Level-Cache von Mybatis beachten Sie bitte die chinesische PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage