我有很少的表,只有很少的條目,它們不會動態改變。所以我想緩存整個表在內存中減少數據庫的負載。我可以通過靜態地圖輕鬆實現,並在靜態塊中填充地圖。Ehcache vs靜態地圖緩存的實現
我想知道Ehcache + hibernate能否以更有效的方式實現相同?
我有很少的表,只有很少的條目,它們不會動態改變。所以我想緩存整個表在內存中減少數據庫的負載。我可以通過靜態地圖輕鬆實現,並在靜態塊中填充地圖。Ehcache vs靜態地圖緩存的實現
我想知道Ehcache + hibernate能否以更有效的方式實現相同?
真正的二級緩存優於靜態映射的優點是,通過仍然保持定義,訪問和遍歷實體的相同方式,您可以獲得內存訪問的優勢:通過使用Hibernate會話(或實體經理)。
您可能會與其他實體保持關係(即使沒有被緩存);您可以使用查詢緩存並仍然對這些實體執行查詢(並且這些查詢的結果也將被緩存)。
簡而言之,它是透明的,提供了更多的選項,因爲Bozho說,並且使用起來更容易,因爲緩存的內容與其他實體的使用方式相同。
我同意使用Ehcahe將保持代碼統一(我們訪問其他實體的方式),但有沒有一種方法可以在服務器啓動時預先填充ecache,就像我可以通過靜態塊在地圖實現中一樣初始填充地圖? – dpsdce 2011-05-25 08:56:23
執行加載所有實體的HQL查詢應該這樣做:從CachedEntity中選擇c。 – 2011-05-25 09:35:04
的Ehcache具有比地圖更多的功能:
如果你不需要任何這些,你可以發無需使用地圖 - 它會更容易配置。
你能提供簡單的緩存地圖實現嗎? – Rachel 2012-01-31 15:56:42
只需聲明一個公共靜態地圖,在地圖中添加要緩存的值,然後啓動一個線程,該線程將每12小時刷新一次該地圖或某些東西。 – dpsdce 2012-02-02 04:31:21
感謝新手,我已經實施了靜態地圖,但並不是每12小時刷新一次。如果有需要,我會進行調查。 – Rachel 2012-02-02 16:37:20