Cascade DELETE significa que si se elimina esta entidad, elimine la o las entidades relacionadas.
DELETE_ORPHAN significa que si una entidad se elimina de una colección relacionada de uno a muchos, no solo la desasocia de la entidad actual, sino que la elimina.
Para darle un ejemplo, considere dos entidades: Casa y Habitación.
ELIMINAR en la lista de habitaciones en Casa significa que si borra la Casa, borre todas sus Habitaciones.
DELETE_ORPHAN en la lista de habitaciones en Casa significa que si elimina una Habitación de esa colección, elimínela por completo. Sin él, la Habitación todavía existiría, pero no se adjuntaría a nada (de ahí "huérfano").
En términos de modelado UML y OO, esta es básicamente la diferencia entre composición y agregación. La relación Casa-> Habitación es un ejemplo de composición. Una habitación es parte de una casa y no existe de manera independiente.
Un ejemplo de agregación es, por ejemplo, Class (parent) para Student (child). Eliminar la clase y el estudiante todavía existe (sin duda en otras clases). Eliminar al estudiante de la clase normalmente no significa eliminarlo.
FYI: si su interfaz para Hibernate es ** JPA **, puede lograr eso con el atributo 'orphanRemoval = true' en la anotación' @ OneToMany' desde ** JPA 2.0 **. Ver http://stackoverflow.com/a/2928481/1029261 – rmoestl