Java Rss阅读器和OpenJPA,数据库中的许多条目-最佳实践

Java Rss阅读器和OpenJPA,数据库中的许多条目-最佳实践,java,memory,rss,db2,openjpa,Java,Memory,Rss,Db2,Openjpa,这是我第一次在这里发帖,我已经发现了很多关于我现在正在处理的程序问题的有用提示,谢谢! 但我自己还有一个问题,这个问题可能更一般一些 我正在为我的毕业论文构建一个Java程序,它是一个RSS阅读器(我使用ROME),所有RSS条目都保存在DB2数据库中(我使用OpenJPA作为持久层)。所有输入的条目都将被自动标记(使用MAUI),并根据用户对以前条目的评分(仍在使用该算法)给出“相关性分数”。有一个SWING GUI,其中列出了所有提要和属于它们的条目,用户可以查看标签,添加新标签(MAUIs

这是我第一次在这里发帖,我已经发现了很多关于我现在正在处理的程序问题的有用提示,谢谢! 但我自己还有一个问题,这个问题可能更一般一些

我正在为我的毕业论文构建一个Java程序,它是一个RSS阅读器(我使用ROME),所有RSS条目都保存在DB2数据库中(我使用OpenJPA作为持久层)。所有输入的条目都将被自动标记(使用MAUI),并根据用户对以前条目的评分(仍在使用该算法)给出“相关性分数”。有一个SWING GUI,其中列出了所有提要和属于它们的条目,用户可以查看标签,添加新标签(MAUIs机器学习将采用这些标签来改进未来的标签),并对条目进行评级

到目前为止,我实现了所有的基本功能,它工作得很好。 但是,考虑到所有提要都将保存在数据库和GUI中,如果我按照当前的方法进行操作,我想知道这个程序的性能如何

为了简化它,我有对象Ressource和Entry。Ressource是一个RSS提要,条目都是“RSS新闻”,每个Ressource都有x个条目,但有一个条目属于一个Ressource,这就是我在DB2和JPA注释中对其建模的方式。 在运行时,我创建一个包含所有Resources的列表(使用Entitymanager调用的“SELECT*FROM Resources”作为命名查询)。此时,我可以访问一个Resources条目,并用它们在GUI中填充一个列表。 很好-我喜欢这样,我从一开始就从数据库中获取所有信息,然后将其转换为Java对象。 到目前为止,我有几百个RSS条目,这个程序需要大约7MB的内存——太棒了

但是:一旦我们有了上万个条目,程序会不会需要太多的内存?我如何告诉JPA只是加载,比如说每个ressource有100个条目(使用JPA检索ressource对象时),以及如何动态获取更多条目

我知道可能有办法通过自己查询来解决这个问题,但我希望你知道我的意思-我想使用标准的JPA功能,而不是让我所有的数据库都变成对象,从而导致巨大的内存需求

非常感谢你的帮助,
Matthias使用分页,就像谷歌那样。不要加载所有条目,而是加载前100个条目,并可以加载下一页的100个条目,以此类推

请参见
Query
类中的
setMaxResults()
setFirstResult()


还要在GUI中添加一个搜索表单,因为浏览10000个条目来查找您要查找的条目并不是任何人都想做的事情。

我刚刚添加了10000个条目,这些条目由随机字符串组成,每个都有1000个字符长。该程序现在已经需要60 MB,当然这仍然不是很多,但我希望内存使用尽可能独立于底层数据量。