2017-03-21 39 views
0

我必須處理一個xml文件,爲此我需要使用單個表中的主鍵來處理約4k個對象。我正在使用EhCache。我有幾個查詢如下:從數據庫加載多個(很多)對象,將它保存在ehcache中並用主鍵查詢它

1)如果我正在逐行查詢基於Id並將其保存在緩存中,這會花費很多時間。我可以在初始時間查詢並在EHCache中保存整個表格,並可以在處理中稍後使用主鍵查詢它

2)我不想使用查詢緩存。由於我無法一次加載4k個對象,因此無法找到正確的對象。

我找的,現在我的進程正在約2小時的最佳解決方案(涉及其他處理過)

感謝您的熱心幫助。

回答

0

您可以讀取整個表格並將其存儲在Map<primary-key, table-row>中以減少數據庫連接的開銷。

我想TreeMap可能是最好的選擇,它使搜索元素更快。

Ehcache是很好處理併發,但如果你正在閱讀一個單一的進程的XML你甚至不需要它(只需將Map存儲在內存中)。

+0

事實上,如果您爲特定目的使用一次數據,您並不需要緩存。你需要一個地圖。但是,不是'TreeMap'。這會慢很多。您正在通過ID查詢。 HashMap更好更快。或者使用ConcurrentHashMap,你正在做並行處理。對它做一個addAll。對於Ehcache,有一個loadAll功能。但同樣,它不覺得你需要一個緩存框架。 – Henri

+0

將4k對象加載到內存中並不是一個好的解決方案,我認爲 – Khushi

相關問題