ORM 框架的緩存

Mybatis緩存

 Mybatis對緩存提供支持,但是在沒有配置的默認情況下,它只開啓一級緩存,一級緩存只是相對於同一個SqlSession而言。所以在參數和SQL完全一樣的情況下,我們使用同一個SqlSession對象調用一個Mapper方法,往往只執行一次SQL,因爲使用SelSession第一次查詢後,MyBatis會將其放在緩存中,以後再查詢的時候,如果沒有聲明需要刷新,並且緩存沒有超時的情況下,SqlSession都會取出當前緩存的數據,而不會再次發送SQL到數據庫。

MyBatis的二級緩存是Application級別的緩存,它可以提高對數據庫查詢的效率,以提高應用的性能。

JPA 緩存

 一級緩存(內置緩存):它屬於事務範圍(線程級別)的緩存,猶如hibernate中session級別的緩存,當進行數據操作時,只要沒有進行事務的提交操作,再次進行數據的操作不會進行數據庫的操作,而是直接獲取緩存中的數據

    二級緩存(外置緩存):它屬於進程範圍或集羣範圍的緩存,它基於EntityFactory進行緩存,猶如hibernate中SessionFactory級別的緩存,它一般用於經常被閱讀到很少被修改的數據中。
————————————————

hibernate一級緩

1、hibernate一級緩存又稱爲”session緩存“:session內置不能被卸載,session的緩存是事務範圍內的緩存(session對象的生命週期通常對應一個數據庫事務或者是一個應用事務),一級緩存中,持久化類的每個實例都是具有唯一的OID

2、hibernate二級緩存又稱爲”sessionFactory的緩存“:由於session Factory對象生命週期和應用程序的整個過程對應,因此hibernate二級緩存是進程範圍或者集羣範圍的緩存,有可能出現併發問題,因此選喲採用適當的併發訪問策略,該策略爲緩存的數據提供了事務隔離級別,此外二級緩存是可選的,是一個可配置的插件,默認情況下是SessionFactory是不會啓用這個插件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章