mybatis一級緩存二級緩存

一級緩存

  Mybatis對緩存提供支持,可是在沒有配置的默認狀況下,它只開啓一級緩存,一級緩存只是相對於同一個SqlSession而言。因此在參數和SQL徹底同樣的狀況下,咱們使用同一個SqlSession對象調用一個Mapper方法,每每只執行一次SQL,由於使用SelSession第一次查詢後,MyBatis會將其放在緩存中,之後再查詢的時候,若是沒有聲明須要刷新,而且緩存沒有超時的狀況下,SqlSession都會取出當前緩存的數據,而不會再次發送SQL到數據庫。數據庫

              

  爲何要使用一級緩存,不用多說也知道個大概。可是還有幾個問題咱們要注意一下。緩存

  一、一級緩存的生命週期有多長?app

  a、MyBatis在開啓一個數據庫會話時,會 建立一個新的SqlSession對象,SqlSession對象中會有一個新的Executor對象。Executor對象中持有一個新的PerpetualCache對象;當會話結束時,SqlSession對象及其內部的Executor對象還有PerpetualCache對象也一併釋放掉。spa

  b、若是SqlSession調用了close()方法,會釋放掉一級緩存PerpetualCache對象,一級緩存將不可用。對象

相關文章
相關標籤/搜索