colecciones en java hibernate
Hibernate determina tres tipos básicos de colecciones

colecciones de valores
Asociaciones uno-a-muchos
Aociaciones muchos-a-muchos
Esta clasificación distingue las algúnas tablas y relaciones de clave foránea pero no nos dice absolutamente todo lo que necesitamos saber sobre el modelo relacional. Para comprender completamente la articula relacional y las características de rendimiento debemos analizar la articula de la clave primaria que Hibernate emplea para actualizar o borrar filas de colección. Esto sugiere la próximo clasificación

colecciones indexadas
conjuntos (sets)
bolsas (bags)
Todas las colecciones indexadas (mapas listas y arrays) tienen una clave principal que consiste de las columnas key e index. En este caso las actualizaciones de colecciones son extremadamente eficientes. La clave principal puede ser indexada eficientemente y una fila en propia puede ser localizada cuando Hibernate intenta actualizarla o borrarla.

Los conjuntos tienen una clave principal que consiste de key y columnas de fundamentos. Esto puede ser menos eficiente para algunos tipos de fundamentos de colección particularmente fundamentos compuestos o texto largo o campos binarios ya que la fundamento de datos puede no ser capaz de indexar una clave principal compleja eficientemente. Sin embargo para asociaciones uno a muchos o muchos a muchos particularmente en el caso de los identificadores sintéticos es posible que sólo sea idéntico de eficiente. Si desea que SchemaExport realmente cree la clave principal de un set tiene que declarar todas las columnas como not-null=true.

Los mapeos de idbag determinan una clave delegada de modo que siempre resulten eficientes de actualizar. De hecho son el mejor caso.

Los bags son el peor caso ya que un bag faculta valores de fundamentos duplicados y no tiene ninguna columna índice no puede definirse ninguna clave principal. Hibernate no tiene manera de diferenciar entre filas duplicadas. Hibernate resuelve este asunto quitando por completo con un sólo DELETE y recreando la colección siempre que cambia. Esto puede ser muy ineficiente.

Para una asociación uno-a-muchos la clave principal puede no ser la clave principal física de la tabla de la fundamento de datos. Inclusive en este caso la clasificación previo es útil todavía. Refleja cómo Hibernate localiza filas individuales de la colección.