gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:57:14 26 4
gpt4 key购买 nike

这是我在这里发布的第一篇文章,我已经发现了许多有关我正在开发的程序的问题的有用提示,谢谢!但我自己仍然有一个问题,这个问题可能更笼统一些。

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

到目前为止,我实现了所有基本功能,并且工作得很好。然而,我想知道这个程序的性能,考虑到如果我继续采用当前的方法,所有提要都将保存在数据库和 GUI 中。

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

但是:一旦我们有一万个条目会发生什么,程序不会需要太多内存吗?我如何告诉 JPA 仅加载,假设每个资源有 100 个条目(当使用 JPA 检索 Ressource 对象时),以及如何动态获取更多?

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

非常感谢您的帮助,马蒂亚斯

最佳答案

使用分页,就像 Google 所做的那样。不是加载所有条目,而是加载前 100 个条目,并可以加载下一页的 100 个条目,等等。

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

还要向您的 GUI 添加一个搜索表单,因为浏览 10,000 个条目来查找您要查找的条目并不是任何人都愿意做的事情。

关于使用 OpenJPA 的 Java Rss 阅读器,数据库中有许多条目 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com