【问题标题】:Storing data in memory将数据存储在内存中
【发布时间】:2013-01-14 05:53:57
【问题描述】:

我在数据库中有 "TABLE A",其中包含 3 列 "COL 1" , "COL 2" and "COL 3",大约有 1000000(100 万)条记录。

针对这张表,我已经映射了一个简单的POJO,比如说"ClassA",其中包含3 个实例变量"var1" , "var2" , "var3",并且还在那里定义了set()get() 方法。

我的应用程序包含简单的 JSP、Servlet 和 POJO,没有花哨的框架和其他技术。

我真正想要的是,当我的应用程序第一次部署在应用程序服务器上并且它收到的第一个请求时,仅针对该请求(仅 1 次)我的 Servlet 将获得 100 万来自 TABLE A 的记录,将 ClassA 与这些记录映射并开始填充 ClassA 的对象并将它们保存在 Vector 或 ArrayList 中,您可能已经理解我的 Vector/ArrayList 现在将包含 100 万个对象每个对象代表 record/tupple 中的 "TableA"

好的,现在进入真正困难的部分,我希望 Vector/ArrayList 成为应用程序上下文或 VM 或任何其他内存存储位置(实际上我不知道)的 stored/persisted/added,所以每次我的 JSP pages/Servlets 访问内存中的对象以获取数据而不是每次都访问数据库。

【问题讨论】:

  • 为什么不使用内存数据库,例如 hsqldb,它将充当缓存,您可以使用自己喜欢的 SQL 语句 - 在应用程序初始化时填充它。其他选择是使用缓存解决方案,例如 JBoss infinispan。

标签: java jsp servlets pojo


【解决方案1】:

您必须使用 Java 缓存系统(see here) 或 Ehcache (see here) 将数据存储在缓存中,控制反转 Spring 中的 strong> 在某种程度上也有帮助,但不确定是否有助于在堆中存储 100 万条数据,因为堆内存是有限的。

【讨论】:

    【解决方案2】:

    如果我没听错的话,您似乎需要缓存。 我建议在这里查看EHcacheInfinispan

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      我认为您正在寻找某种方法来缓存您的对象。

      你可能想看看ehcache

      或者,

      由于您有大型对象,您可以考虑实现对象存储库,例如noDB

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-10
        • 2011-04-07
        • 1970-01-01
        • 1970-01-01
        • 2017-10-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多