一級緩存,sqlsession級別,默認開啓,數據庫會話結束,它就自然消亡,即,sqlsession.close(),會釋放掉一級緩存PerpetualCache對象,一級緩存將不可用。
另外,調用了clearCache(),會清空PerpetualCache對象中的數據,但是該對象仍可使用,同時,SqlSession中執行了任何一個update操作(update()、delete()、insert()) ,都會清空PerpetualCache對象的數據,但是該對象可以繼續使用。
二級緩存是Application級別的緩存,默認是不開啓的,二級緩存需要進行配置,POJO必須是可序列化的。 也就是要求實現Serializable接口,映射XML文件配置配置<cache/>。
注意事項:
所有select語句將會被緩存
所有insert、update和delete語句會刷新緩存
使用默認的Least Recently Used(LRU,最近最少使用的)算法來收回
緩存不會以任何時間順序來刷新
緩存會存儲列表集合或對象(無論查詢方法返回什麼)的1024個引用
緩存會被視爲是read/write(可讀/可寫)的緩存,意味着對象檢索不是共享的,而且可以安全的被調用者修改,不干擾其他調用者或線程所做的潛在修改。