Rumah  >  Artikel  >  Java  >  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
Barbara Streisandasal
2024-11-02 22:00:30220semak imbas

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

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

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>

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