2010-02-19 152 views
0

我上的節點之間的高速緩存複製解決方案工作休眠和ehcache的複製

節點A - 主節點=>休眠+數據庫+了Ehcache作爲二級緩存
節點B - 區域節點=>了Ehcache作爲prmiary緩存。沒有休眠

節點B僅用作查詢的附近緩存。

現在我正在更新節點A中的數據(Say SudentInfo),它會被正確保存並緩存。在複製端(我正在使用JMS),它向Node B發送消息。但問題是,它發送的消息是實例CacheEntry(深層內部元素),沒有辦法重新生成原始對象(StudentInfo)。我在節點B中得到的是具有學生屬性的CacheEntry,但實際上並不是學生對象。

請注意,我不需要節點B中的Hibernate會話/持久性,節點B僅用於快速查詢,持久性是通過節點A完成的。 那麼有沒有人試過這樣的解決方案? 有沒有辦法將CacheEntry轉換爲實際的對象? 或告訴ehcache複製原始對象而不是CacheEntry。

感謝您的幫助

回答

0

「Ehcache as secondary cache」是什麼意思?作爲二級緩存

因爲如果是這種情況,那麼複製的對象不是對象,而是Hibernate用來存儲對象的數據,它基本上等同於存儲在數據庫中的行級數據。

看看這篇文章,它解釋了什麼是在二級緩存: Truly Understanding the Hibernate Second-Level cache and Query cache

我對你的問題是 - 爲什麼配置節點B到與數據庫對話 - 那麼你有一個同質設置。如果緩存恰好在工作 - 那麼你會得到緩存值並且不會觸及數據庫 - 如果不是,則會觸發數據庫。

除非有一些拓撲原因,否則你無法做到這一點 - 在我看來,使用相同的配置/設置運行兩個節點會容易得多。