将数据存储在内存中
我在数据库中有"TABLE A"
,其中包含3列"COL 1" , "COL 2" and "COL 3"
,大约有1000000
(1百万)条记录。
对于这个表我已经映射了一个简单的POJO
让我们说"ClassA"
有3个实例变量"var1" , "var2" , "var3"
并且还定义了set()
和get()
方法。
我的应用程序包含简单的JSP,Servlet和POJO,没有花哨的框架,也没有其他技术。
我真正想要的是,当我的应用程序第一次部署在Application Server上并且它收到的第一个请求时,只有那个请求(只有一次)我的Servlet将从TABLE A
获得1百万条记录TABLE A
,使用这些记录映射ClassA并开始填充ClassA
的对象并将它们保存在Vector或ArrayList
,因为您可能已经知道我的Vector/ArrayList
现在将包含1百万个对象,每个对象代表一个record/tupple
in "TableA"
。
好的,现在来到真实和困难的部分,我希望将Vector/ArrayList
stored/persisted/added
到应用程序上下文或VM或任何其他内存存储位置(实际上我不知道),以便每次我的JSP pages/Servlets
访问内存中的对象时,每次都要获取数据而不是访问数据库。
您必须使用Java缓存系统 ( 请参阅此处 )或Ehcache ( 请参阅此处 )将数据存储在缓存中, Spring中的 Inversion of Control在某种程度上也有所帮助,但不确定它是否有助于在堆中存储100万个数据,如堆记忆力有限。
如果我找对你,看起来你需要缓存。 我建议在这里看看EHcache或Infinispan 。
希望这可以帮助
我认为您正在寻找缓存对象的方法。
你可能想看一下ehcache
要么,
既然你有大型对象,你可以看一下实现Object Repository,比如noDB