深化了解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一級緩存,希望對大家有所協助,假如大家有任何疑問請給我留言,會及時回復大家的。在此也十分感激大家對網站的支持!