2017-04-07 74 views
3

我的項目是在春天4.3.4,5.2.4休眠和3.3的Ehcache彈簧4的Ehcache 3休眠5緩存默認模板設置

我要尋找一個奇異JSR-107(的JCache)CacheManager的一個解決方案整個應用程序提供:

  • 春天緩存 - 有明確命名的高速緩存的數量;
  • Hibernate的L2高速緩存 - 與隱含產生任何數量的區域(這實際上是在緩存太)的

這裏主要關注的是休眠的能力。實際上,這是爲其地區設置默認模板的問題。在回顧了很多主題之後,我還沒有發現一個完全適合的解決方案。

所以,如果它存在,我懇請專家指出它。高度讚賞編程唯一的配置方式(ehcache.xml是不需要的)。

加:(回答@Anthony Dahanne): 我在發佈這個主題之前就已經看到了您指定的項目中的解決方案。更重要的是,這個項目是我一週前調查的起點。

但是,該解決方案不僅涉及到Spring的幾個名爲Cache區域的顯式聲明,而且涉及到Hibernate,因爲我們可以在CacheConfiguration#createCacheConfigurations方法中找到它。

這在實際項目中很不方便,其中包含100500個由Hibernate管理的不同實體,NaturalKeys等等,因爲對於所有的應用程序,它都應該在運行中創建適當的區域。我將Hibernate的RegionFactory的主要功能區分爲能夠自動完成這項神奇工作的能力。但是我們在customized JCacheRegionFactory課程的指出的項目中看到了什麼?直接禁止它產生新的區域,這是通過無條件的例外來實現的,這將導致任何嘗試這樣做(它甚至被指出「......但確保所有高速緩存已經存在以防止自發創建配置不當的緩存......「評論)。

理想的解決方案必須能夠設置一個唯一的「默認模板」(在CacheManager級別上),就像在encache.xml中工作一樣(... jcache:defaults default-template =「myDefaultTemplate .. ),...但沒有XML。

回答

1
+0

親愛的Anthony Dahanne,謝謝你的迴應!您指向的JHipster項目作爲不同緩存方面用法的示例非常有用。但它使用明確的方式來定義Hibernate的區域,這不適合我。在我的第一篇文章中看到我的附加說明。所以,我不能完全滿意所提供的解決方案,並會繼續詢問。 –

0

我們從不需要默認配置(aka new MutableConfiguration)。但是,設置有意義的默認值是可以接受的所以,在你的情況下,我會使用定製的JCacheRegionFactory

查看this article關於它。

+0

親愛的亨利!首先,感謝您鏈接到您的文章。另外,我是您的「Ehcache 3樣本」項目的感謝調查員。但我不能同意Hibernate的區域應該明確定義。看看我的添加在一個初始的帖子。我不想獲得「隨機默認配置」。我希望在不干預Hibernate的RegionFactory的情況下預先配置它,但只需在CacheManager級別上提供一些基本配置,就像我們使用帶有定義的「default-template」的ehcache.xml一樣。我希望用Java以編程方式完成它。可能嗎? –

+0

你說得對,它不可能通過編程來定義模板。主要是因爲重複使用方法幾乎是一樣的。它也更加靈活。你爲什麼不想擴展'JCacheRegionFactory'?這就是你將如何獲得預配置的緩存和乾淨的方式來做到這一點。 – Henri