Heim > Java > javaLernprogramm > Wie definiere ich Beziehungen zu Anmerkungen in Hibernate 4 mithilfe von Spring?

Wie definiere ich Beziehungen zu Anmerkungen in Hibernate 4 mithilfe von Spring?

Patricia Arquette
Freigeben: 2024-11-04 02:21:01
Original
343 Leute haben es durchsucht

How to Define Relationships with Annotations in Hibernate 4 using Spring?

Beziehungen mit Annotationen in Hibernate 4 mithilfe von Spring definieren

Um verschiedene Arten von Beziehungen mithilfe von Annotationen in Hibernate 4 für die bereitgestellten Klassen zu implementieren, hat Foo und Bar, schauen wir uns die Einzelheiten an.

Eins-zu-viele-unidirektionale Beziehung:

Konfigurieren Sie die Foo-Klasse mit der Annotation @OneToMany und einer Liste< Bar> Eigentum. Lassen Sie die Bar-Klasse unverändert. Dadurch wird eine Eins-zu-Viele-Beziehung hergestellt, bei der Foo mehrere zugeordnete Bar-Objekte haben kann, Bar jedoch nicht auf Foo zurückgreifen kann.

Bidirektionale Eins-zu-Viele-Beziehung (verwaltet von Foo.class ):

Verwenden Sie die @OneToOne-Annotation mit cascade = CascadeType.ALL auf Foo.class. Fügen Sie eine @JoinColumn-Annotation hinzu, die die Spalte in Bar.class angibt, die für den Join verwendet werden soll. Verwenden Sie für Bar.class die Annotation @OneToOne und geben Sie mappedBy = "bar" an, um anzugeben, dass die Beziehung von Foo.class verwaltet wird.

Eins-zu-viele unidirektionale Beziehung mit Benutzer- verwaltete Join-Tabelle:

Verwenden Sie die @OneToMany-Annotation mit einer @JoinTable-Annotation, um eine separate Join-Tabelle anzugeben. Definieren Sie die Join-Spalten mit @JoinColumn-Anmerkungen auf beiden Seiten. Verwenden Sie bei Bedarf eine zusätzliche Klasse, um die Join-Tabelle darzustellen.

Bidirektionale Eins-zu-Viele-Beziehung mit Fremdschlüsselzuordnung:

Auf Foo.class, Verwenden Sie @OneToMany(mappedBy = "bar"), um die Beziehung abzubilden. Verwenden Sie auf Bar.class @ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) mit einer @JoinColumn-Annotation.

Bidirektionale Many-to-Many mit Hibernate -verwaltete Join-Tabelle:

Verwenden Sie @ManyToMany sowohl für Foo.class als auch für Bar.class und verwenden Sie eine @JoinTable-Annotation für die Join-Tabelle, die die Join-Spalten angibt.

Bidirektionale Many-to-Many mit benutzerverwaltetem Join-Table-Objekt:

Ähnlich wie beim unidirektionalen One-to-many-Beispiel verwenden Sie @OneToMany mit einer @JoinTable-Annotation. Erstellen Sie eine separate Klasse, um die Join-Tabelle darzustellen und die Beziehung sowohl auf Foo.class als auch auf Bar.class mit @ManyToOne zuzuordnen.

Bestimmen des Abruftyps:

Verwenden Sie fetchType .LAZY, um das Laden verwandter Sammlungen zu verzögern, bis auf sie zugegriffen wird. Verwenden Sie fetchType.EAGER, um die Sammlung sofort zu laden. Beachten Sie jedoch, dass dies Auswirkungen auf die Leistung haben kann. Erwägen Sie die Verwendung von Hibernate.initialize() in Ihrer Service-Klasse, um verzögert geladene Sammlungen für bestimmte Anwendungsfälle manuell zu initialisieren.

Bestimmen der Kaskadenrichtung:

Verwenden Sie die Annotation @Cascade, um Geben Sie Kaskadierungsoptionen an. Im Allgemeinen kaskadieren Veränderungen in der Richtung der Eigentümerbeziehung. Vermeiden Sie kaskadierende Aktualisierungen oder Löschungen vom untergeordneten zum übergeordneten Element, wenn dies im Anwendungskontext keinen Sinn ergibt.

Waisenentfernung:

Setzen Sie orphanRemoval = true für die @OneToMany-Annotation, damit Hibernate verwaiste Objekte (d. h. solche, die keinem anderen übergeordneten Objekt zugeordnet sind) automatisch löscht, wenn sie entfernt werden aus der Sammlung auf dem übergeordneten Objekt.

Das obige ist der detaillierte Inhalt vonWie definiere ich Beziehungen zu Anmerkungen in Hibernate 4 mithilfe von Spring?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage