Hibernate緩存

Hibernate緩存的做用(即爲何要用緩存機制),而後再具體說說Hibernate中緩存的分類狀況,
最後能夠舉個具體的例子。
Hibernate緩存的做用:
    Hibernate是一個持久層框架,常常訪問物理數據庫,爲了下降應用程序對物理數據源訪問的頻次,
    從而提升應用程序的運行性能。緩存內的數據是對物理數據源中的數據的複製,應用程序在運行時
    從緩存讀寫數據,在特定的時刻或事件會同步緩存和物理數據源的數據
Hibernate緩存分類:
  Hibernate緩存包括兩大類:Hibernate一級緩存和Hibernate二級緩存
  Hibernate一級緩存又稱爲「Session的緩存」,它是內置的,不能被卸載(不能被卸載的意思就是這
  種緩存不具備可選性,必須有的功能,不能夠取消session緩存)。因爲Session對象的生命週期一般
  對應一個數據庫事務或者一個應用事務,所以它的緩存是事務範圍的緩存。第一級緩存是必需的,不
  容許並且事實上也沒法卸除。在第一級緩存中,持久化類的每一個實例都具備惟一的OID。 
Hibernate二級緩存又稱爲「SessionFactory的緩存」,因爲SessionFactory對象的生命週期和應用程
  序的整個過程對應,所以Hibernate二級緩存是進程範圍或者集羣範圍的緩存,有可能出現併發問題,
  所以須要採用適當的併發訪問策略,該策略爲被緩存的數據提供了事務隔離級別。第二級緩存是可選的
  ,是一個可配置的插件,在默認狀況下,SessionFactory不會啓用這個插件。

什麼樣的數據適合存放到第二級緩存中?   
1 不多被修改的數據   
2 不是很重要的數據,容許出現偶爾併發的數據   
3 不會被併發訪問的數據   
4 常量數據   
不適合存放到第二級緩存的數據?   
1常常被修改的數據   
2 .絕對不容許出現併發訪問的數據,如財務數據,絕對不容許出現併發   
3 與其餘應用共享的數據。 

Hibernate查找對象如何應用緩存?
當Hibernate根據ID訪問數據對象的時候,首先從Session一級緩存中查;查不到,若是配置了二級緩存
,那麼從二級緩存中查;若是都查不到,再查詢數據庫,把結果按照ID放入到緩存刪除、更新、增長數
據的時候,同時更新緩存

Hibernate管理緩存實例
不管什麼時候,咱們在管理Hibernate緩存(Managing the caches)時,當你給save()、update()或
saveOrUpdate()方法傳遞一個對象時,或使用load()、 get()、list()、iterate() 或scroll()方法
得到一個對象時, 該對象都將被加入到Session的內部緩存中。 
當隨後flush()方法被調用時,對象的狀態會和數據庫取得同步。 若是你不但願此同步操做發生,或
者你正處理大量對象、須要對有效管理內存時,你能夠調用evict() 方法,從一級緩存中去掉這些對
象及其集合。
相關文章
相關標籤/搜索