欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解Mybatis一級緩存

 更新時間:2016年12月20日 17:30:59   作者:我要這鐵棒有何用  
客戶端向數(shù)據(jù)庫服務器發(fā)送同樣的sql查詢語句,如果每次都去訪問數(shù)據(jù)庫,會導致性能的降低,那么怎么提高呢?下面小編給大家分享下mybatis為我們提供了一級緩存的策略

客戶端向數(shù)據(jù)庫服務器發(fā)送同樣的sql查詢語句,如果每次都去訪問數(shù)據(jù)庫,會導致性能的降低。

那么怎么提高呢?

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

在一個sqlSession開啟和關(guān)閉之間,sqlSession對象內(nèi)部(其實是Executor)會維護一個緩存的對象,當查詢數(shù)據(jù)時候,先從緩存中尋找是否存在該條數(shù)據(jù),存在就直接取出來,不存在,向數(shù)據(jù)庫發(fā)送sql查詢, 然后將查詢后的數(shù)據(jù)存入緩存,和返回給程序。

這樣會存在一個問題:

如果在第一次和第二次查詢期間,有程序更改了要查訊的數(shù)據(jù)庫的數(shù)據(jù),就會引起讀取的數(shù)據(jù)是錯誤的,也就是

臟讀,其實是mybatis在sqlSession執(zhí)行commit()方法后會清空這個緩存。第二次去查詢,依然會從數(shù)據(jù)庫中查詢.

也可以手動調(diào)用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);
    //更改數(shù)據(jù),會清空緩存
    user.setUsername("yyyy");
    mapper.updateUser(user);
    session.commit();
    //第二次查詢會從緩存中找
    User user2 = mapper.findUserById(1);
    System.out.println(user2);
    session.close();
  }

問題:

如果sqlSession關(guān)閉了,緩存也就清空了。這怎么使用緩存來提高效率呢?

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

以上所述是小編給大家介紹的Mybatis一級緩存,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 解決IDEA 2020.3 lombok失效問題

    解決IDEA 2020.3 lombok失效問題

    這篇文章主要介紹了IDEA 2020.3 lombok失效問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot中JPA更新時部分字段無效

    SpringBoot中JPA更新時部分字段無效

    本文主要介紹了SpringBoot中JPA更新時部分字段無效,在通過注解自動更新時,部分字段在調(diào)試時可以找到,卻沒有被自動更新到數(shù)據(jù)庫中,下面就介紹一下解決方法
    2023-04-04
  • Java JConsole遠程連接配置案例詳解

    Java JConsole遠程連接配置案例詳解

    這篇文章主要介紹了Java JConsole遠程連接配置案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java返回文件時為圖片或pdf等設置在線預覽或下載功能

    Java返回文件時為圖片或pdf等設置在線預覽或下載功能

    這篇文章主要介紹了Java返回文件時為圖片或pdf等設置在線預覽或下載功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • 解決spring-data-jpa 事物中修改屬性自動更新update問題

    解決spring-data-jpa 事物中修改屬性自動更新update問題

    這篇文章主要介紹了解決spring-data-jpa 事物中修改屬性自動更新update問題,具有很好的參考價值,希望對大家
    2021-08-08
  • java使用泛型實現(xiàn)棧結(jié)構(gòu)示例分享

    java使用泛型實現(xiàn)棧結(jié)構(gòu)示例分享

    泛型是Java SE5.0的重要特性,使用泛型編程可以使代碼獲得最大的重用。由于在使用泛型時要指明泛型的具體類型,這樣就避免了類型轉(zhuǎn)換。本實例將使用泛型來實現(xiàn)一個棧結(jié)構(gòu),并對其進行測試
    2014-03-03
  • SpringBoot Mybatis動態(tài)數(shù)據(jù)源切換方案實現(xiàn)過程

    SpringBoot Mybatis動態(tài)數(shù)據(jù)源切換方案實現(xiàn)過程

    這篇文章主要介紹了SpringBoot+Mybatis實現(xiàn)動態(tài)數(shù)據(jù)源切換方案過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • JDK21無法導入TimeUnit類的解決辦法

    JDK21無法導入TimeUnit類的解決辦法

    這篇文章主要給大家介紹了關(guān)于JDK21無法導入TimeUnit類的解決辦法,TimeUnit是java.util.concurrent包下面的一個類,TimeUnit提供了可讀性更好的線程暫停操作,通常用來替換Thread.sleep(),需要的朋友可以參考下
    2024-01-01
  • hibernate中HQL如何調(diào)用自定義函數(shù)

    hibernate中HQL如何調(diào)用自定義函數(shù)

    這篇文章主要介紹了hibernate中HQL如何調(diào)用自定義函數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java設計模式的事件模型詳解

    Java設計模式的事件模型詳解

    這篇文章主要為大家詳細介紹了Java設計模式的事件模型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論