2017-01-26 30 views
0

我工作在其上使用Java(JDK 1.8),Spring MVC的(RESTful Web服務層)4.x的開發Java應用程序,休眠5.x中,MySQL數據庫和Tomcat服務器8.所有配置都以編程方式在java配置中配置,並且沒有XML配置文件。我需要爲休眠配置二級緩存。我打算將EhCache與應用程序整合在一起。與Spring MVC整合了Ehcache和Hibernate應用

  1. 這是可能實現的Java配置(無ehcache.xml中的文件)?
  2. 另一個問題是,什麼是春天緩存和hibernate的二級緩存之間的區別?

回答

1

關於以編程方式將Ehcache配置爲Hibernate二級高速緩存,當您使用Ehcache 2.x和net.sf.ehcache.hibernate.EhCacheRegionFactory時,不可能開箱即用。你將不得不延長工廠類,並使其配置CacheManager使用。

對於使用JCache的Hibernate 5.2,使用Ehcache 3.x作爲提供程序,有一個更簡單的路徑:確保先配置JCache CacheManager,然後讓Hibernate使用配置的路徑。作爲替代方案,可以擴展org.hibernate.cache.jcache.JCacheRegionFactory和適應CacheManagerCache創作。該following sample可以幫助你看着辦吧。

關於第二點:

Spring caching是可以在您決定什麼是緩存的應用程序的所有層,從中調用等使用一般的抽象...

Hibernate second level cache是專用緩存位於您的對象模型和數據庫訪問之間。你告訴框架什麼要緩存哪些語義,但實際的工作是隱藏的。

你當然可以在一個單一的應用程序,在那裏你能緩存更高水平的結果,如服務調用結果或網頁與Spring Cache和實體/查詢結果與Hibernate 2LC結合了。雖然我會建議使用不同的Cache很好地分開他們的內容和生命週期。

+0

非常感謝您花費時間來回答 –

+0

@SafdarAkrami我做對了Ehcache fullstack樣品全Java實現。但它尚未合併。所以,你可能要檢查https://github.com/henri-tremblay/ehcache3-samples/blob/javaonly/fullstack/src/main/java/org/terracotta/demo/config/CacheConfiguration.java – Henri