Heim  >  Artikel  >  Java  >  Vertiefendes Verständnis des First-Level-Cache von Mybatis

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

高洛峰
高洛峰Original
2017-01-23 09:33:301519Durchsuche

Der Client sendet die gleiche SQL-Abfrageanweisung an den Datenbankserver. Wenn auf die Datenbank jedes Mal zugegriffen wird, wird die Leistung verringert.

Wie kann man sich also verbessern?

mybatis bietet uns eine Cache-Strategie der ersten Ebene

Zwischen dem Öffnen und Schließen einer sqlSession verwaltet das sqlSession-Objekt (eigentlich der Executor) zunächst ein zwischengespeichertes Objekt Durchsuchen Sie den Cache, um festzustellen, ob die Daten vorhanden sind. Wenn sie nicht vorhanden sind, senden Sie eine SQL-Abfrage an die Datenbank, speichern Sie die Abfragedaten im Cache und geben Sie sie an das Programm zurück.

Es wird ein Problem auftreten:

Wenn ein Programm während der ersten und zweiten Abfrage die Daten der abzufragenden Datenbank ändert, führt dies dazu, dass die gelesenen Daten falsch sind. Das heißt,

Dirty Reading. Tatsächlich löscht mybatis den Cache, nachdem die Methode commit() in sqlSession ausgeführt wurde. Bei der zweiten Abfrage erfolgt weiterhin eine Abfrage aus der Datenbank.

Sie können die Methode „clearCache()“ von sqlSession auch manuell aufrufen, um den Cache zu leeren.

Kleines Beispiel:

@Test
  public void testCacheLever1() throws Exception{
    SqlSession session = factory.openSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //第一次请求,查询id为1的用户
    User user = mapper.findUserById(1);
    System.out.println(user);
    //更改数据,会清空缓存
    user.setUsername("yyyy");
    mapper.updateUser(user);
    session.commit();
    //第二次查询会从缓存中找
    User user2 = mapper.findUserById(1);
    System.out.println(user2);
    session.close();
  }

Problem:

Wenn sqlSession geschlossen ist, wird der Cache geleert. Wie kann Caching zur Effizienzsteigerung genutzt werden?

Okay, im nächsten Artikel stellen wir Ihnen den Second-Level-Cache von mybatis vor.

Das Obige ist der vom Herausgeber eingeführte Mybatis-Cache der ersten 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 Mybatis First-Level-Cache beachten Sie bitte die chinesische PHP-Website!

Stellungnahme:
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