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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 09:10:03730Durchsuche

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>

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>

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>

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>

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>

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>

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!

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