Pregunta

Estoy usando Hibernate y algunas veces tenía que aplicar en cascada operación DELETE del objeto padre a sus hijos. He utilizado las siguientes dos opciones.

Una de las opciones es exponer getChildren () en el objeto padre, añadir el elemento secundario a la colección devuelta de los niños y dejar que Hibernate eliminación en cascada automáticamente. La desventaja de esta opción es que getChildren () necesidades de recolección a estar expuestos a pesar de que sólo se usa para apoyar Hibernate en cascada.

Otra opción es buscar y eliminar manualmente los niños en ParentDao.delete (padre). La desventaja de esta opción es más código personalizado. Sin embargo, esta opción puede funcionar mejor si se utiliza instrucciones de eliminación por lotes.

¿Qué enfoque se utiliza sobre todo? ¿Ves otros pros y los contras?

¿Fue útil?

Solución

¿Qué enfoque se utiliza sobre todo? ¿Ves otros pros y los contras?

Yo uso en cascada cuando tengo un real composición relación (y desea eliminar un número relativamente bajo de registros). Sin embargo, no habría que introducir tal relación sólo para poner en práctica un borrado, pero el uso de una consulta (HQL mayor BORRAR o una consulta SQL nativo). A mi experiencia, los beneficios son mayores que el "costo" del código adicional requerido (que es pequeño de todos modos).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top