tipos tablas outer left inner hacer full ejemplos cruzado con como java sql join java-ee

java - tablas - tipos de join oracle



Realización de la operación Join en Java, en pequeños conjuntos de datos recuperados de la base de datos.(contexto: aplicación web) (3)

En el contexto de una aplicación web, ¿es adecuado realizar alguna operación JOIN en Java, en los datos recuperados de la base de datos (desde la primera consulta), y usar los datos ed "JOIN" para la segunda y última consulta en la base de datos para obtener los datos requeridos.

¿Proporciona Java algún mecanismo integrado para tales implementaciones o cuál podría ser la mejor manera posible de hacerlo?

(Lo sé, esto no es lo mejor que se puede hacer, pero la base de datos no es una base de datos SQL y no permite las operaciones JOIN).

Los datos para la operación JOIN son: - Un dataset contiene aproximadamente 50 enteros (avg) y otro contiene aproximadamente 150 enteros (avg).

El primer conjunto de datos tendría una lista de solo enteros, pero el segundo tendrá una lista de conjuntos de números enteros y un ''entero de datos''. Si los dos enteros en los dos conjuntos de datos se cruzan, el correspondiente ''entero de datos'' se pasa en la lista de resultados. Entonces el resultado contendría los datos enteros correspondientes a los enteros intersecados.

Por ejemplo, Lista A = {21, 65, 93} Lista B = {(21, 42342), (53,73242), (93, 32312)}

Resultado = {42342, 32312}

Los dos datos de los conjuntos para la operación JOIN se pueden implementar en forma de una estructura de árbol. Por lo tanto, esta operación JOIN podría hacerse más eficiente porque solo se necesitarán comparar árboles, no toda la lista (mientras se realiza JOIN, si los dos nodos (profundidad similar) no coinciden en algún nodo del árbol, entonces todos sus nodos secundarios omitirse, y el control se moverá al siguiente nodo superior)

Gracias.


¿Estás preguntando cómo hacer una intersección de conjuntos en Java? Dada tu definición de los datos, dos conjuntos de datos, enteramente enteros, aquí está mi sugerencia:

Establecer a = nuevo HashSet (la lista de elementos del primer conjunto de datos) Establecer b = nuevo HashSet (la lista de elementos del segundo conjunto de datos)

Set joined = a.retainAll (b); // esta es la forma de establecer las intersecciones con java.util.Set


Por supuesto, puedes hacer un rápido JOIN en Java. Solo conozco tres razones para no hacerlo:

  • es trabajo adicional
  • las filas que no coinciden se obtienen innecesariamente
  • la cantidad de datos puede ser demasiado grande para ser manejada en la memoria

Sin una base de datos SQL, no tienes opción, de todos modos. Entonces, asumiendo el caso más simple, es decir, uniéndote a una condición como Ax = Bx , puedes hacerlo fácilmente calculando la intersección usando Set.retainAll . Para cada miembro de la intersección, debe combinar todas las filas correspondientes de la primera tabla con todas las filas correspondientes de la segunda.

Suponiendo que no hay columnas más interesantes en las tablas, ya terminaste. De lo contrario, debe adjuntarlos de alguna manera. En el caso de que x sea ​​único tanto en A como en B , puede usar Mapas; de lo contrario, necesitará un Multiset (hay muchas implementaciones disponibles, por ejemplo, en Guava).


Unir datos en Java no es una mala idea. En algunas situaciones, puede ser más rápido y más sensible que hacer uniones en la base de datos (depende de muchos factores). Especialmente si no tienes otra opción :-)

Si puede obtener los resultados de la base de datos como conjuntos de resultados jdbc estándar, puede usar la familia de conjuntos de filas inteligentes: JoinRowSet, FilteredRowSet, etc. Recopilan datos tabulares de la base de datos y los unen, filtran y serializan en el lado de Java ( un poco como ado.net). Las implementaciones estándar no son parte del estándar, pero las encontrará en el paquete com.sun.rowset.

Si solo necesita hacer esta unión única, es posible que sea una exageración, pero como está utilizando algunos db nosql, es posible que desee estandarizar la forma en que filtra y se une.