Rumah > Java > javaTutorial > Bagaimanakah saya boleh memanfaatkan anotasi Hibernate dan Spring untuk mewujudkan dan mengurus perhubungan satu-ke-banyak, banyak-ke-satu dan banyak-ke-banyak antara entiti?

Bagaimanakah saya boleh memanfaatkan anotasi Hibernate dan Spring untuk mewujudkan dan mengurus perhubungan satu-ke-banyak, banyak-ke-satu dan banyak-ke-banyak antara entiti?

Barbara Streisand
Lepaskan: 2024-11-02 22:00:30
asal
402 orang telah melayarinya

How can I leverage Hibernate and Spring annotations to establish and manage one-to-many, many-to-one, and many-to-many relationships between entities?

Menggunakan Anotasi untuk Mencipta Perhubungan dalam Hibernate dan Spring

Perhubungan Satu-dengan-Banyak

  • Uni- arah: Kelas pemilik, Foo, mengekalkan senarai Bar. Dalam pangkalan data, Bar akan mempunyai kunci asing kepada Foo.

    <code class="java">@Entity
    public class Foo {
      @OneToMany
      private List<Bar> bars;
    }
    
    @Entity
    public class Bar {
      @ManyToOne
      @JoinColumn(name="fooId")
      private Foo foo;
    }</code>
    Salin selepas log masuk
  • Dwiarah: Kedua-dua Foo dan Bar mengekalkan rujukan antara satu sama lain.

    <code class="java">@Entity
    public class Foo {
      @OneToMany(mappedBy="foo")
      private List<Bar> bars;
    }
    
    @Entity
    public class Bar {
      @ManyToOne
      @JoinColumn(name="fooId")
      private Foo foo;
    }</code>
    Salin selepas log masuk

Hubungan Ramai-dengan-Satu

  • Sehala: Kelas pemilik, Bar, merujuk kepada Foo . Dalam pangkalan data, Foo akan mempunyai kunci asing untuk Bar.

    <code class="java">@Entity
    public class Bar {
      @ManyToOne
      @JoinColumn(name="fooId")
      private Foo foo;
    }
    
    @Entity
    public class Foo {
      // No corresponding mapping to Bar
    }</code>
    Salin selepas log masuk
  • Dwiarah: Kedua-dua Foo dan Bar mengekalkan rujukan antara satu sama lain.

    <code class="java">@Entity
    public class Bar {
      @ManyToOne
      @JoinColumn(name="fooId")
      private Foo foo;
    }
    
    @Entity
    public class Foo {
      @OneToMany(mappedBy="foo")
      private List<Bar> bars;
    }</code>
    Salin selepas log masuk

Perhubungan Ramai-dengan-Banyak

  • Menggunakan jadual jambatan: Mencipta jadual gabungan untuk menyimpan perhubungan.

    <code class="java">@Entity
    public class Foo {
      @ManyToMany
      @JoinTable(name="FOO_BAR",
          joinColumns = @JoinColumn(name="fooId"),
          inverseJoinColumns = @JoinColumn(name="barId"))
      private List<Bar> bars;
    }
    
    @Entity
    public class Bar {
      @ManyToMany
      @JoinTable(name="FOO_BAR",
          joinColumns = @JoinColumn(name="barId"),
          inverseJoinColumns = @JoinColumn(name="fooId"))
      private List<Foo> foos;
    }</code>
    Salin selepas log masuk

Pilihan Konfigurasi

  • OphanRemoval: Apabila benar, entiti yatim piatu (yang tidak dirujuk oleh mana-mana ibu bapa) akan dipadamkan pada siram.
  • fetchType: Mengawal jenis strategi pengambilan yang digunakan untuk pemuatan malas koleksi.
  • lata: Menentukan operasi yang dilantunkan daripada entiti ibu bapa kepada anak.

Menyelesaikan masalah

  • LazyInitializationException: Berlaku apabila cuba mengakses koleksi yang dimuatkan dengan malas tanpa memulakannya terlebih dahulu.
  • Isu Prestasi: Penggunaan Eager Fetching secara berlebihan boleh merendahkan prestasi.
  • OphanRemoval: Gunakan dengan berhati-hati untuk mengelakkan pemadaman pangkalan data yang tidak perlu.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memanfaatkan anotasi Hibernate dan Spring untuk mewujudkan dan mengurus perhubungan satu-ke-banyak, banyak-ke-satu dan banyak-ke-banyak antara entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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