gpt4 book ai didi

java - 将 Java SQL ResultSet 转换为对象或结构集

转载 作者:行者123 更新时间:2023-12-02 05:14:11 29 4
gpt4 key购买 nike

我的 Java 应用程序有一个 ResultSet,它是作为 SQL 查询执行的结果生成的。现在,为了工作(分析特定列内容,根据数据计算特定参数值,以在 UI 中表示数据)高效(两者:内存和性能)有了这些数据,我必须将其存储在一些数据集合中。

我的问题是:

  1. ResultSet的行存储在ArrayList中是否是一个好主意,或者有更适合需求的数据集合,描述上面?

  2. 我应该将每个 ResultSet 行转换为对象还是将其存储为普通结构?假设,ResultSet 的大小code> 矩阵大约是 5000 x 10,我不确定,开始在循环中生成 5000 个 Java 对象是一个好主意。

  3. 据我了解,对象创建是一项相当“繁重”的任务,因此,如果可以避免此操作,就应该这样做。 但是,从另一方面来说,LINQ 默认返回对象集而不是普通结构,因此,可能仍然值得将 ResultSet 转换为对象集合而不是对象集合结构?

  4. 是否有任何 Java 内置方法可以将 ResultSet 行转换为对象,或者我必须手动编写它?我知道,事实并非如此努力工作,但可能有一些现成的解决方案。

最佳答案

  1. 不,由于结果记录的数量可能非常大,并且您可能对这种粒度级别不感兴趣,因此我建议流式处理结果(例如只进游标)并存储聚合数据(例如在许多列表/ map 中)。此外,您可能需要考虑使用 SQL 引擎来聚合和计算值,而不是使用 Java 进行编码。

  2. 我建议使用对象而不是标量将结果存储在多个(聚合)映射中。 Google Guava 有一些可能有用的集合类。

  3. 对象创建并不繁重,但是您应该考虑内存占用,因为结果记录的数量可能很大。我建议在循环中聚合值,用聚合值填充一个或多个映射。您真的需要记录级别的粒度吗?可能不是。

  4. 有许多 ORM(对象关系映射)工具可用,例如 hibernate 。另外,Java 有一个“RowSet”类,用于在本地存储完整的结果集,但请谨慎使用(内存占用)

关于java - 将 Java SQL ResultSet 转换为对象或结构集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27115961/

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