国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

深入理解Mybatis一級緩存

2019-11-26 13:25:18
字體:
來源:轉載
供稿:網友

客戶端向數據庫服務器發送同樣的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一級緩存,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泗洪县| 冀州市| 筠连县| 赫章县| 伊通| 沈丘县| 高邑县| 永安市| 达日县| 鞍山市| 偃师市| 绥宁县| 南康市| 滨海县| 金塔县| 中宁县| 吉木乃县| 修文县| 镇原县| 辽阳县| 西青区| 武宣县| 浦江县| 鹤山市| 舟曲县| 阿鲁科尔沁旗| 郓城县| 内江市| 达日县| 凤城市| 宁蒗| 鄯善县| 加查县| 五常市| 乌兰县| 交城县| 永定县| 襄城县| 大方县| 平罗县| 玉林市|