这是我第一次在这里发帖,我已经找到了很多有用的提示,可以解决我现在正在开发的程序的问题,谢谢!但是我自己还有一个问题,这个问题可能更笼统一些。
我正在为我的毕业论文构建一个 Java 程序,它是一个 RSS 阅读器(我为此使用 ROME),所有 RSS 条目都保存在 DB2 数据库中(我使用 OpenJPA 作为持久层)。所有传入的条目都将被自动标记(使用 MAUI),并根据用户对先前条目的评分(仍在研究该算法)给予“相关性分数”。有一个 SWING GUI,其中将列出所有提要和属于它们的条目,用户可以查看标签,添加新标签(MAUI 机器学习将采用这些标签来改进未来的标签)并为条目评分。
到目前为止,我实现了所有基本功能,并且运行良好。但是,我想知道这个程序的性能,考虑到所有提要都将保存在数据库和 GUI 中,如果我会按照我目前的方法进行操作的话。
为了简化它,我有对象资源和条目。资源是一个 RSS 提要,条目都是“RSS 新闻”,每个资源都有 x 个条目,但一个条目属于一个资源,这就是我在 DB2 中使用 JPA 注释对其进行建模的方式。在运行时,我创建了一个包含所有资源的列表(使用“SELECT * FROM RESSOURCES”作为我使用 Entitymanager 调用的命名查询)。那时我可以访问资源条目并用它们在 GUI 中填写一个列表。很好 - 我喜欢这样,我从一开始就从数据库中获取所有信息,然后将其转换为 Java 对象。到目前为止,我有几百个 RSS 条目,程序需要大约 7MB 的内存 - 很棒。
但是:一旦我们有一万个条目会发生什么,程序不会需要太多内存吗?我如何告诉 JPA 只加载,假设每个资源有 100 个条目(使用 JPA 检索 Ressource 对象时),我如何动态获取更多?
我知道可能有办法通过我自己的查询来解决这个问题,但我希望你知道我的意思——我想使用标准的 JPA 功能,而不会一直将我的所有数据库都变成对象,从而导致巨大的内存需求。
非常感谢您的帮助,马蒂亚斯