Heim > Java > javaLernprogramm > Hauptteil

Wie können Sie mithilfe von Anmerkungen Beziehungen im Ruhezustand und im Frühling definieren?

Patricia Arquette
Freigeben: 2024-11-03 09:10:03
Original
730 Leute haben es durchsucht

How Can You Define Relationships in Hibernate and Spring Using Annotations?

Verwenden von Anmerkungen zum Definieren von Beziehungen in Hibernate 4 und Spring

Unidirektionale und bidirektionale Beziehungen

Eins-zu-Eins-Beziehungen

Unidirektional:

<code class="java">class Foo {
    private Bar bar;
}

class Bar {
}</code>
Nach dem Login kopieren

Bidirektional (verwaltet von der Foo-Klasse):

<code class="java">class Foo {
    @OneToOne(cascade = CascadeType.ALL)
    private Bar bar;
}

class Bar {
    @OneToOne(mappedBy = "bar")
    private Foo foo;
}</code>
Nach dem Login kopieren

Ein- Zu-Viele-Beziehungen

Unidirektional mit benutzerverwalteter Join-Tabelle:

<code class="java">class Foo {
    @OneToMany
    @JoinTable(name = "FOO_BAR",
        joinColumns = {@JoinColumn(name = "fooId")},
        inverseJoinColumns = {@JoinColumn(name = "barId")})
    private List<Bar> bars;
}

class Bar {
    // No corresponding mapping to Foo.class
}

@Entity
@Table(name = "FOO_BAR")
class FooBar {
    private UUID fooBarId;
    private Foo foo;
    private Bar bar;
}</code>
Nach dem Login kopieren

Bidirektional mit Fremdschlüsselzuordnung:

<code class="java">class Foo {
    @OneToMany(mappedBy = "bar")
    private List<Bar> bars;
}

class Bar {
    @ManyToOne
    @JoinColumn(name = "fooId")
    private Foo foo;
}</code>
Nach dem Login kopieren

Many-to-Many-Beziehungen

Bidirektional mit Hibernate Managed Join Table:

<code class="java">class Foo {
    @OneToMany
    @JoinTable(name = "FOO_BAR",
        joinColumns = {@JoinColumn(name = "fooId")},
        inverseJoinColumns = {@JoinColumn(name = "barId")})
    private List<Bar> bars;
}

class Bar {
    @OneToMany
    @JoinTable(name = "FOO_BAR",
        joinColumns = {@JoinColumn(name = "barId")},
        inverseJoinColumns = {@JoinColumn(name = "fooId")})
    private List<Foo> foos;
}</code>
Nach dem Login kopieren

Bidirektional mit Vom Benutzer verwaltete Verknüpfungstabelle:

<code class="java">class Foo {
    @OneToMany(mappedBy = "bar")
    private List<FooBar> bars;
}

class Bar {
    @OneToMany(mappedBy = "foo")
    private List<FooBar> foos;
}

@Entity
@Table(name = "FOO_BAR")
class FooBar {
    private UUID fooBarId;
    private Foo foo;
    private Bar bar;
}</code>
Nach dem Login kopieren

Bestimmung des Beziehungseigentums

  • Im Allgemeinen besitzt das Objekt mit der Sammlung die Beziehung.

Auswählen FetchType

  • Standard: LAZY
  • Verwenden Sie EAGER für Sammlungen, die häufig verwendet werden.
  • Erwägen Sie die Verwendung von Hibernate.initialize() oder FetchMode.SUBSELECT für verzögert geladene Sammlungen, die benötigt werden in einer bestimmten Methode.

Bestimmen der Kaskadenrichtung

  • Kaskadenoperationen erfolgen nur in eine Richtung, sofern nicht anders angegeben.
  • Markieren Sie die @OneToMany-Annotation für Kaskadeneinstieg die besitzende Seite der Beziehung.

Orphan Removal

  • OrphanRemoval = true: Entfernt verwaiste Objekte, auf die in keiner anderen Beziehung mehr verwiesen wird.

Das obige ist der detaillierte Inhalt vonWie können Sie mithilfe von Anmerkungen Beziehungen im Ruhezustand und im Frühling definieren?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!