程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> JPA 2.0 Vs Hibernate:緩存方法的差異(二)

JPA 2.0 Vs Hibernate:緩存方法的差異(二)

編輯:J2EE

【51CTO獨家編譯】在前文中我們把JPA 2.0緩存原理進行了簡單的介紹,本文將為大家介紹一下Hibernate緩存原理。(51CTO編輯特別推薦專題:Hibernate應用開發教程

Hibernate緩存原理

Hibernate也設有兩個級別的緩存:第一級和第二級緩存。第一級緩存是存儲在一個特定時域實例裡的查詢結果,而第二級緩存則是與SessionFactory實例相關聯。

Hibernate的默認使用的第一級緩存來存儲每一此運算的對象。 Hibernate的二級緩存是由SessionFactory支持,根據訪問對象的應用水平來調用訪問數據庫需要的對象次數,從而減少了訪問次數。Hibernate的緩存不是通過儲存存儲對象本身的實例來實現的。

Hibernate 3.0支持以下四個開源項目的第二級緩存實現:

◆EHCache (org.hibernate.cache.EhCacheProvider) -- Default

◆OSCache (org.hibernate.cache.OSCacheProvider)

◆SwarmCache (org.hibernate.cache.SwarmCacheProvider)

◆JBoss TreeCache (org.hibernate.cache.TreeCacheProvider)

第二級緩存可以啟用分別設置屬性hibernate.cache.use_second_level_cache為正確或錯誤。這裡是一個設置實例:

  1. <property name="hibernate.cache.use_second_level_cache">
  2. true
  3. </property>

你可以選擇在hibernate.cfg.XML文件裡的hibernate.cache.provider_class屬性應用進行設置,這裡是另一個設置實例:

  1. <property name="hibernate.cache.provider_class">
  2. org.hibernate.cache.EhCacheProvider
  3. </property>

您也可以在類級層或集合層通過設置在映射文件作為<cache>組成部分啟用緩存:

  1. <cache usage="read-only" region="regionName" include="all"/>

這裡有一個在上面的代碼中的組成部分:

◆指定緩存策略的使用情況。

◆指定二級緩存區域。

◆包括是一個可選屬性(一般情況下為默認設置),如果數據不常使用可以取消緩存。

您還可以通過設置hibernate.cfg.xml文件中的<class-cache>和<collection-cache> 內容配置為緩存,在一個單獨的EhCache配置文件(ehcache.XML)和項目的根目錄裡啟用緩存。

您可以執行的緩存是同一組的參數經常使用的查詢緩存。查詢緩存設置為false默認情況下,您可以啟用hibernate.cfg.XML文件中加入下面的屬性:

  1. <property name="hibernate.cache.use_query_cache">true</property>

此查詢添加StandardQueryCache和UpdateTimestampsCache,分別為查詢緩存的結果和最新更新的時間表。查詢結果可以通過調用緩存特定的setCacheable查詢。

Hibernate 3.5緩存

Hibernate 3.5緩存策略與Hibernate的緩存策略是相同的,同時添加了在Hibernate 3.2和Hashtable沒有的某些如JBoss Cache 2、JBoss Cache的1.x中緩存策略。

Hibernate 3.5另一個重大進步是Infinispan作為另一個二級緩存標准加入。Infinispan是一個開源、可擴展的數據網格平台,公開了JCache(支持JSR-107)兼容的緩存接口。 Infinispan提供了更高程度的並發性,因為Infinispan使用一個專門的數據結構,而不是僅僅捆綁到Java,同時它也支持PHP,Python和Ruby等。

結論

在本文中,我們比較的JPA 2.0緩存在Hibernate的緩存。通過引入新的緩存功能,促進標准化,JPA的2.0做了很多工作使得開發更容易。不過,因為所有的功能都有了很長時間的支持,Hibernate是在許多方面遙遙領先。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved