java - 在 Java 中对从数据库检索的一小部分数据执行连接操作。 (上下文: web application)

标签 java sql join jakarta-ee

在 Web 应用程序的上下文中,是否适合在 Java 中对从数据库检索的数据(从第一个查询)执行一些 JOIN 操作,并使用“JOIN”数据进行第二个和最后一个查询查询数据库获取所需数据。

Java 是否为此类实现提供任何内置机制,或者实现此目的的最佳方法是什么?

(我知道,这不是最好的做法,但数据库不是 SQL 数据库并且不允许 JOIN 操作。)

JOIN 操作的数据为: - 一个数据集包含约 50 个整数(avg),另一个数据集包含约 150 个整数(avg)。

第一个数据集将包含仅整数的列表,但第二个数据集将包含整数集和“数据整数”的列表。如果两个数据集中的两个整数相交,则相应的“数据整数”将传递到结果列表中。因此结果将包含与相交的整数相对应的数据整数。

例如 列表 A ={ 21, 65, 93} 列表 B ={ (21, 42342), (53,73242), (93, 32312)}

结果 ={ 42342, 32312 }

JOIN操作的两组数据都可以采用树结构的形式实现。因此,这个 JOIN 操作可以变得更加高效,因为只需要比较树而不是整个列表 (在执行JOIN时,如果两个(相似深度)节点在树中的某个节点不匹配,则其所有子节点将被跳过,并且控制将移动到下一个顶部节点)

谢谢。

最佳答案

当然,您可以在 Java 中进行快速 JOIN。我只知道反对这样做的三个原因:

  • 这是额外的工作
  • 不必要地获取不匹配的行
  • 数据量可能太大而无法在内存中处理

无论如何,如果没有 SQL DB,您就别无选择。因此,假设最简单的情况,即按照 A.x = B.x 的条件进行连接,您可以通过使用 Set.retainAll 计算交集来轻松完成。对于交集的每个成员,您需要将第一个表中的所有相应行与第二个表中的所有相应行组合起来。

假设表中没有更多有趣的列,那么您就完成了。否则你需要以某种方式附加它们。如果 xAB 中都是唯一的,您可以使用 Maps,否则您需要 Multiset(有许多可用的实现,例如, Guava )。

关于java - 在 Java 中对从数据库检索的一小部分数据执行连接操作。 (上下文: web application),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4825452/

相关文章:

sql - 从重复组中获取时间段的开始

MySQL 结合外连接

sql-server - 如何在 SQL Server 中进行多重 JOIN

php - 与 codeigniter 加入时出错 : variable query

mysql - 对多行求和(包括重复行)

mysql - 如何将非标准化字符串日期时间转换为 MySQL 日期时间?

java - 将 null 函数作为参数传递给 java 函数

java - maven - 两个模块可以使用同一库的不同版本

java - 如何使用java从远程系统读取文件?

java - 请推荐一个基于 Java 的图形 PDF 生成器