Cascata ELIMINA significa che se questa entità viene eliminata, eliminare l'entità o le entità correlate.
DELETE_ORPHAN significa che un'entità viene rimossa da una raccolta uno-a-molti correlata, quindi non solo la dissocia dall'entità corrente, ma la elimina.
Per fare un esempio, considerare due entità: Casa e Stanza.
ELIMINA nell'elenco Camere su House significa che se si elimina la casa, eliminare tutte le sue stanze.
DELETE_ORPHAN nell'elenco Room in House significa che se si rimuove una stanza da tale raccolta, eliminarla interamente. Senza di esso, la Stanza sarebbe ancora esistente ma non sarebbe attaccata a nulla (quindi "orfana").
In termini di modellazione UML e OO, questa è fondamentalmente la differenza tra composizione e aggregazione. La relazione House-> Room è un esempio di composizione. Una stanza è parte di una casa e non esiste in modo indipendente.
Un esempio di aggregazione è, ad esempio, Class (genitore) a Studente (figlio). Cancellare la classe e lo studente esiste ancora (indubbiamente in altre classi). Rimozione dello studente dalla classe in genere non significa eliminarlo.
FYI: se l'interfaccia per Hibernate è ** JPA **, è possibile farlo con l'attributo 'orphanRemoval = true' nell'annotazione' @ OneToMany' da ** JPA 2.0 **. Vedi http://stackoverflow.com/a/2928481/1029261 – rmoestl