Beziehungen in Hibernate 4 kommentieren
In Hibernate 4 und Spring können Sie mithilfe von Anmerkungen verschiedene Beziehungen zwischen Klassen definieren. Im Folgenden wird beschrieben, wie man Eins-zu-Eins-, Eins-zu-Viele-, Viele-zu-Eins- und Viele-zu-Viele-Beziehungen erstellt:
Unidirektionale Eins-zu-Eins-Beziehungen :
- Verwenden Sie @OneToOne für die besitzende Klasse (der Primärschlüssel der besitzenden Klasse verweist auf die andere Klasse).
- Keine entsprechende Zuordnung für die andere Klasse erforderlich.
Bidirektionale Eins-zu-Eins-Beziehungen:
- Verwenden Sie @OneToOne(mappedBy = "bar") für die besitzende Klasse, um die Beziehung anzugeben wird von der anderen Klasse verwaltet.
- Verwenden Sie @OneToOne für die andere Klasse mit „mappedBy“, indem Sie auf die besitzende Klasse zeigen.
Unidirektionale Eins-zu-Viele-Beziehungen verwenden Vom Benutzer verwaltete Join-Tabelle:
- Verwenden Sie @OneToMany für die besitzende Klasse.
- Verwenden Sie @JoinTable, um die Join-Tabelle zwischen den Entitäten zu definieren.
- Nein Zuordnung für die andere Klasse erforderlich.
Bidirektionale Eins-zu-Viele-Beziehung mit Fremdschlüsselzuordnung:
- Verwenden Sie @OneToMany(mappedBy = „bar“) für die besitzende Klasse.
- Verwenden Sie @ManyToOne für die andere Klasse mit „mappedBy“ und zeigen Sie auf die besitzende Klasse.
Bidirektionale Many-to- Viele nutzen die von Hibernate verwaltete Join-Tabelle:
- Verwenden Sie @OneToMany für beide Klassen, um eine selbstreferenzierende Beziehung zu erstellen.
- Verwenden Sie @JoinTable, um die Join-Tabelle zu definieren.
Bidirektionale Many-to-Many mit benutzerverwaltetem Join-Tabellenobjekt:
- Verwenden Sie @OneToMany für beide Klassen, um eine selbstreferenzierende Beziehung zu erstellen .
- Definieren Sie eine separate Klasse als Join-Tabellenobjekt.
Bestimmen der „Owner“-Seite bidirektionaler Beziehungen:
- Normalerweise wird die Klasse, die eine Sammlung einer anderen Klasse hat, als „besitzende“ Seite betrachtet.
- Dies bestimmt, wo der Fremdschlüssel gespeichert wird und welche Klasse die Änderungen verwaltet.
FetchType auswählen
- Lazy Fetching (Standard) lädt die zugehörigen Objekte nur bei Bedarf.
- Eager Fetching (set fetchType = FetchType.EAGER) lädt die verwandte Objekte sofort.
Vermeiden Sie LazyInitializationException, indem Sie Hibernate.initialize() oder FetchMode verwenden:
- Verwenden Sie Hibernate.initialize(person.getRoles() ); um eine träge abgerufene Sammlung eifrig zu laden.
- Verwenden Sie setFetchMode("roles", FetchMode.SUBSELECT) für die Kriterien, um eine Sammlung eifrig zu laden.
Bestimmen der Kaskadenrichtung:
- Verwenden Sie die Kaskade, um anzugeben, welche Vorgänge (Erstellen, Aktualisieren, Löschen) zwischen den zugehörigen Entitäten kaskadiert werden.
- Legen Sie die Kaskade bei Bedarf in beide Richtungen fest, aber nur, wenn es semantisch sinnvoll ist.
Waisenentfernung:
- Aktivieren orphanRemoval auf @OneToMany, um verwaiste Entitäten (Entitäten, auf die nicht mehr verwiesen wird) automatisch zu löschen.
Das obige ist der detaillierte Inhalt vonWie definiere ich Beziehungen in Hibernate 4 mithilfe von Anmerkungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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