Hibernate- und JPA-Kaskadentypen, wann welcher und wo verwendet werden soll

8

Ich verwende Hibernate in einem Projekt und bin völlig verwirrt darüber, wann ich org.hibernate.annotations.CascadeType verwenden und wann man javax.persistence.CascadeType-Annotationen verwenden soll.

Zum Beispiel wenn ich so etwas verwenden soll:

%Vor%

vs etwas wie folgt:

%Vor%

Ich habe auch gelesen, dass Hibernate bestimmte Kaskadentypen ignoriert, die in der one-to-xxxx-Annotation enthalten sind. Kann mich jemand zurechtweisen?

    
Jimmy Johnson 28.12.2012, 07:31
quelle

1 Antwort

4

Im Allgemeinen finden Sie viele Beispiele für diese Art von Überlappungen, wenn Sie Hibernate verwenden. Dafür kann es verschiedene Gründe geben. Entweder ist es aus Legacy-Gründen (Hibernate erstellte die Annotation, bevor sie in JPA standardisiert wurde), oder weil Hibernate mehr Funktionalität unterstützt, als der JPA-Standard zulässt, oder weil sie sich nur geringfügig in ihrer Semantik unterscheiden.

In diesem Fall ist die Hibernate-Dokumentation sehr klar, warum @Cascade existiert, wenn @OneToMany(cascade=...) der Standard ist. Die Hibernate-Annotation ( @Cascade ) bietet Ihnen viel mehr Optionen als die Standard-JPA-Version und auch eine etwas andere Semantik.

Sie sollten immer die JPA-Standardanmerkungen bevorzugen, solange Sie keine spezielle Hibernate-Funktion / Semantik benötigen.

    
Aleksander Blomskøld 28.12.2012, 07:38
quelle

Tags und Links