在Java中执行Join操作,对从数据库中检索的一小组数据进行操作.(上下文:Web应用程序)

Raj*_*pta 2 java sql join java-ee

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

Java是否为此类实现提供了任何内置机制,或者可能是最好的方法?

(我知道,这不是最好的事情,但数据库不是SQL数据库,不允许JOIN操作.)

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

第一个数据集只有整数列表,但第二个数据集将包含一组整数和'数据整数'的列表.如果两个数据集中的两个整数相交,则在结果列表中传递相应的"数据整数".因此结果将包含对应于相交整数的数据整数.

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

结果= {42342,32312}

用于JOIN操作的两组数据都可以以树结构的形式实现.因此,这个JOIN操作可以更高效,因为只需要比较树而不是整个列表(在执行JOIN时,如果两个(类似深度)节点在树中的某个节点不匹配,那么它的所有子节点都将被跳过,控件将移动到下一个顶级节点)

谢谢.

maa*_*nus 5

当然,你可以在Java中快速加入JOIN.我只知道反对它的三个原因:

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

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

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