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