緩存相關
-
什麼是緩存
存在於內存中的臨時數據。
-
爲什麼使用緩存
減少和數據庫的交互次數,提高執行效率。
-
什麼樣的數據能使用緩存,什麼樣的數據不能使用
適用於緩存:
經常查詢並且不經常改變的。
數據的正確與否對最終結果影響不大的。
不適用於緩存
經常改變的數據
數據的正確與否對最終結果影響很大的。
例如:商品的庫存,銀行的匯率,股市的牌價。
Mybatis中的一級緩存和二級緩存
一級緩存:
一級緩存指的是Mybatis中SqlSession對象的緩存
作用範圍爲本SqlSession對象創建的代理對象。
當我們執行查詢之後,查詢的結果會同時存入到SqlSession爲我們提供一塊區域中。
該區域的結構是一個Map。當我們再次查詢同樣的數據,mybatis會先去sqlsession中
查詢是否有,有的話直接拿出來用。
當SqlSession對象消失時,mybatis的一級緩存也就消失了。
清空緩存的方法:當sqlSession執行commit close clearCache 或代理對象執行 修改 刪除 保存 等方法後
會自動清空一級緩存數據
- 測試一級緩存
二級緩存:
二級緩存指的是Mybatis中SqlSessionFactory對象的緩存。由同一個SqlSessionFactory對象創建的SqlSession共享其緩存。
- 二級緩存的使用步驟:
第一步:讓Mybatis框架支持二級緩存(在SqlMapConfig.xml中配置)
第二步:讓當前的映射文件支持二級緩存(在mapper.xml中配置)
第三步:讓當前的操作支持二級緩存(在select標籤中配置)
二及緩存中存儲的是數據並非對象當我們對比兩次從緩存中獲取的同一個實體類時,因爲每次獲取都要重新封裝成實體類所以對比結果是false