Hibernate三級緩存sql
一級緩存(session級別緩存):數據庫
一、session關閉後,緩存就沒了;hibernate發出一條sql查詢,若緩存中沒有,則從數據庫中查,查到以後放入緩存緩存
二、以id爲key值緩存對象session
二級緩存(sessionFactory級別緩存):ide
1.hibernate沒有提供相應的二級緩存組件,因此須要額外的二級緩存包EHcachespa
2.hibernate二級緩存存的僅僅是對象,就算只想查詢這個對象的某幾個屬性,仍是會把這個對象的全部信息查詢出來。hibernate
3.當一級緩存關閉以後,一級緩存就失效了,若這個對象配置了二級緩存,就算session關閉,hibernate會從二級緩存(sessionFactory)中查到數據。對象
三級緩存(查詢緩存:sessionFactory級別):生命週期
一、查詢緩存是專門針對各類查詢操做進行緩存。查詢緩存會在整個SessionFactory的生命週期中起做用,存儲的方式也是採用key-value的形式來進行存儲的。it
二、查詢緩存中的key是根據查詢的語句、查詢的條件、查詢的參數和查詢的頁數等信息組成的。而數據的存儲則會使用兩種方式,使用SELECT語句只查詢實體對象的某些列或者某些實體對象列的組合時,會直接緩存整個結果集。而對於查詢結果爲某個實體對象集合的狀況則只會緩存實體對象的ID值,以達到緩存空間可 以共用,節省空間的目的。
三、在使用查詢緩存時,除了須要設置hibernate.cache.provider_class參數來啓動二級緩存外,還須要經過hibernate.cache.use_query_cache參數來啓動對查詢緩存的支持。
注:緩存通常只對查詢比較對,更改比較少的數據進行設置,若修改較多反而會影響hibernate的效率。