發布時間: 2023-03-31 17:08:37
它指的是Mybatis中SqlSessionFactory對象的緩存。由同一個SqlSessionFactory對象創建的SqlSession共享其緩存。
二級緩存是一個Mapper映射級別的緩存,多個SqlSession對同一個Mapper映射的sql語句進行操作,多個SqlSession可以共享二級緩存,二級緩存是交叉SqlSession。
sqlsession關閉(close)后,sqlsession的一級緩存中的數據將被添加到命名空間的二級緩存中。
打開二級緩存后,還需要對緩存中的pojo實現Serializable接口,才能取出緩存中的數據進行反序列化操作,因為二級緩存的數據存儲介質是多樣的,不一定只存在于內存中,可能存在于硬盤中。
3. 二級緩存有過期時間,但沒有后臺線程來檢測它
需要注意的是,不是鍵值的過期時間,而是這個緩存的過期時間,也就是flushInterval,意味著整個緩存的緩存被清空,所以不需要后臺線程定時檢測。
每當數據被訪問時,就會檢查緩存的生存時間,默認是1小時,如果緩存已經生存了1小時,那么整個緩存就會被清空。
4. 當Mybatis調用Dao層查詢數據庫時,它首先查詢二級緩存,該緩存沒有相應的數據,然后查詢一級緩存,該緩存也沒有數據,最后到數據庫中去找。
上一篇: VMDK是什么文件
下一篇: MyBatis的一級緩存什么意思