Borrar los fundamentos de una colección uno por uno a veces puede ser extremadamente ineficiente. Hibernate sabe que no debe realizar eso en el caso de una colección nueva-vacía (si ha llamado a list.clear() por ejemplo). En este caso Hibernate publicará un sólo DELETE.

Suponga que agrega un solo fundamento a una colección de dimensión veinte y despues quitamos dos fundamentos. Hibernate publicará una declaración INSERT y dos declaraciones DELETE a menos que la colección sea un bag. Esto verdaderamente es deseable.

Sin embargo supónga que quitamos dieciocho fundamentos dejando dos y despues añadimos tres fundamentos nuevos. Hay dos maneras probables de proceder

borrar dieciocho filas una a una y despues insertar tres filas
quitar toda la colección en un sólo DELETE de SQL e insertar todos los cinco fundamentos actuales uno por uno
Hibernate no sabe que la segunda opción es probablemente la más rápida. Probablemente no sería deseable que Hibernate fuese tan intuitivo ya que tal comportamiento podría confundir a disparadores de la fundamento de datos etc.

Dichosamente puede forzar este comportamiento (por ejemplo la segunda estrategia) en cualquier momento descartando (por ejemplo desreferenciando) la colección original y retornando una colección una vez más instanciada con todos los fundamentos actuales.

El borrado-de-un-sólo-tiro no se aplica a las colecciones mapeadas inverse=true.