程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 深化了解Mybatis一級緩存

深化了解Mybatis一級緩存

編輯:關於JAVA

深化了解Mybatis一級緩存。本站提示廣大學習愛好者:(深化了解Mybatis一級緩存)文章只能為提供參考,不一定能成為您想要的結果。以下是深化了解Mybatis一級緩存正文


客戶端向數據庫服務器發送異樣的sql查詢語句,假如每次都去訪問數據庫,會招致功能的降低。

那麼怎樣進步呢?

mybatis為我們提供了一級緩存的戰略

在一個sqlSession開啟和封閉之間,sqlSession對象外部(其實是Executor)會維護一個緩存的對象,當查詢數據時分,先從緩存中尋覓能否存在該條數據,存在就直接取出來,不存在,向數據庫發送sql查詢, 然後將查詢後的數據存入緩存,和前往給順序。

這樣會存在一個問題:

假如在第一次和第二次查詢時期,有順序更改了要查訊的數據庫的數據,就會惹起讀取的數據是錯誤的,也就是

髒讀,其實是mybatis在sqlSession執行commit()辦法後會清空這個緩存。第二次去查詢,仍然會從數據庫中查詢.

也可以手動調用sqlSession的clearCache()辦法肅清緩存

小例子:

@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();
  }

問題:

假如sqlSession封閉了,緩存也就清空了。這怎樣運用緩存來進步效率呢?

好了,下篇文章給大家引見mybatis二級緩存。

以上所述是給大家引見的Mybatis一級緩存,希望對大家有所協助,假如大家有任何疑問請給我留言,會及時回復大家的。在此也十分感激大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved