hibernate緩存

在hibernate中緩存不需要做任何配置,但多瞭解一下還是很有助於寫代碼的

借用緩存,有時候分開查詢比聯合查詢的速度更快。


緩存類型:

  1.一級緩存
  2.二級緩存
  3.查詢緩存
  

一級緩存:

1.也叫做session級的緩存,它的生命週期也session一樣,當session關閉的時候一級緩存清空

    2. 一級緩存只能緩存對象 
    
 load方法:支持一級緩存
 get方法:支持一級緩存
 
 iterator()方法:
   因爲它有N+1的問題,所以要分開說:
  N:這部分是支持一級緩存
  1:這部分是不支持的。
 save:把對象放到了緩存中,如果在同一個session中,先save再load的話
 是不會發出sql語句的。
 
 緩存的管理:
    用session來管理緩存,使用clear()和evict()方法,清空緩存
    
二級緩存:
   1.只能緩存實體對象
   2.sessinFactory級的緩存
   
舉例:兩個session兩次load

第一次load的時候,把對象放到了一級緩存和二級緩存,當sesion關閉的時候
只清空了一級緩存,下一次再load的時候,會先到一級緩存中去找,如果開啓了
二級緩存就再到二級緩存中去找。


配置:(ehcache)

以下配置其實hibernate默認是開啓的,所以不需要寫任何內容!!,now,下面是解釋:

在hibernate.cfg.xml中配置
   1.手工開啓二級緩存
  <property name="hibernate.cache.use_second_level_cache">true</property>
  2.手工編寫提供商
  <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
  3.指明那個類使用二級緩存
  <class-cache usage="read-only" class="com.sxdx.hibernate.vo.Book"/>
  注意:這句話放在<mapping>之後
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章