Rumah  >  Artikel  >  Java  >  Bagaimana Anda Boleh Mentakrifkan Perhubungan dalam Hibernate dan Spring Menggunakan Anotasi?

Bagaimana Anda Boleh Mentakrifkan Perhubungan dalam Hibernate dan Spring Menggunakan Anotasi?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 09:10:03732semak imbas

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

Menggunakan Anotasi untuk Mentakrifkan Hubungan dalam Hibernate 4 dan Spring

Hubungan Sehala dan Dwi Arah

Satu-dengan-Satu Perhubungan

Uni-Arah:

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

class Bar {
}</code>

Dwi Arah (diuruskan oleh kelas Foo):

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

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

Satu-ke-Banyak Perhubungan

Sehala Arah menggunakan Jadual Sertaan Terurus Pengguna:

<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>

Dwi Arah menggunakan Pemetaan Kunci Asing:

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

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

Ramai-ke-Ramai Perhubungan

Dua Arah menggunakan Jadual Sertaan Terurus Hibernate:

<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>

Dwi Arah menggunakan Jadual Sertaan Terurus Pengguna:

<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>

Menentukan Perhubungan Pemilikan

  • Secara amnya, objek dengan koleksi memiliki perhubungan.

Memilih FetchType

  • Lalai: MALAS
  • Gunakan EAGER untuk koleksi yang kerap digunakan.
  • Pertimbangkan untuk menggunakan Hibernate.initialize() atau FetchMode.SUBSELECT untuk koleksi yang dimuatkan secara malas yang diperlukan dalam kaedah tertentu.

Menentukan Arah Lata

  • Operasi lata hanya pergi ke satu arah melainkan dinyatakan.
  • Tandakan @OneToMany anotasi untuk lata di bahagian pemilikan perhubungan.

Orphan Removal

  • OrphanRemoval = true: Mengalih keluar objek yatim yang tidak lagi dirujuk dalam mana-mana perhubungan lain.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Mentakrifkan Perhubungan dalam Hibernate dan Spring Menggunakan Anotasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn