1. 程式人生 > >MyBatis中的快取1

MyBatis中的快取1

 

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快取區中