2013-01-14 97 views
5

我有"TABLE A"在數據庫中包含3列"COL 1" , "COL 2" and "COL 3"1000000(100萬)記錄。在內存中存儲數據

對這個表我制訂一個簡單的POJO可以說"ClassA" 3個實例變量"var1" , "var2" , "var3"還定義有set()get()方法。

我的應用程序包含簡單的JSP,Servlet和POJO,沒有花哨的框架,也沒有其他技術。

我真正想要的是,當第一次我的應用程序將要部署在應用程序服務器和它收到的第一個請求時,僅對於該請求(只有一次),我的Servlet將獲得1來自TABLE A的百萬條記錄將ClassA與這些記錄進行映射,並開始填充ClassA的對象並將它們保留在Vector或ArrayList中,因爲您可能已經瞭解我的Vector/ArrayList現在將包含100萬個對象,其中每個對象都代表record/tupple"TableA"。我想要這個Vector/ArrayListstored/persisted/added到應用程序上下文或到VM或任何其他內存存儲位置(實際上我不知道),以便每次我的JSP pages/Servlets正在訪問獲取數據的內存中的對象,而不是每次都訪問數據庫。

+0

爲什麼不使用的內存數據庫,如HSQLDB ,它將充當緩存,您可以使用您最喜歡的SQL語句 - 在應用程序初始化時填充它。其他選項是使用緩存解決方案,如JBoss infinispan。 –

回答

2

你有也有助於在某種程度上,但不知道這是否會有助於利用的Java緩存系統see here)或的Ehcachesee here)將數據存儲在緩存中,控制的反演在堆中存儲100萬個數據,因爲堆內存有限。

1

它看起來像你需要緩存,如果我得到你的權利。 我建議在這裏看看EHcacheInfinispan

希望這可以幫助

0

我認爲你正在尋找一些方法來緩存你的對象。

你可能想看看ehcache

,或者

,因爲你有大量的對象,你可以看看如何實現對象庫一樣,noDB