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!