MyBatis中的快取1
阿新 • • 發佈:2018-12-11
1、應用程式和資料庫互動的過程是一個相對比較耗時的過程
2、快取存在的意義:讓應用程式減少對資料庫的訪問,提升程式執行的xiaolv
3、MyBatis中預設SqlSession快取開啟
3.1 同一個SqlSession物件呼叫同一個<select>時,只有第一次訪問資料庫,第一次之後把查詢結果快取到SqlSession快取區(記憶體)中
3.2 快取的是statement物件,(簡單記憶:必須是用一個<select>)
3.2.1在Mybatis時 一個<select>對應一個statement物件
3.3 有效範圍必須是同一個SqlSession物件
4、快取流程 (sqlsession)
4.1 步驟一:先去快取區中找是否存在statement
4.2 步驟二:返回結果
4.3 步驟三:如果沒有快取statement物件,去資料庫獲取資料
4.4 步驟四:資料庫返回查詢結果
4.5 步驟五:把查詢結果放到對應的快取區中
5、SqlSessionFactory快取
5.1 又叫:二級快取
5.2 有效範圍:同一個factory 內哪個SqlSession都可以獲取
5.3 什麼時候使用二級快取:
5.3.1 當資料頻繁被使用,很少被修改
5.4 使用二級快取步驟
5.4.1 在mapper.xml中新增
5.4.2 如果不寫readOnly="true" 需要把實體類序列化
1 <cache readOnly="true"></cache>
5.5 當SqlSession物件close()時 或commit()時會把SqlSession快取的資料刷(flush)到SqlSessionFactory快取區中