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

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

Patricia Arquette
Lepaskan: 2024-11-03 09:10:03
asal
793 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan