Jadual Kandungan
Hibernate satu-ke-banyak dan banyak-ke-banyak
Hibernate's one-to-many
Konfigurasi satu-ke-banyak Hibernate
Dalam Hibernate, kami boleh mengakses objek berkaitan melalui sifat koleksi. Sebagai contoh, kita boleh mendapatkan semua kursus yang diambil oleh pelajar melalui kaedah
Dalam Hibernate, kami boleh memudahkan operasi pangkalan data dengan mengkonfigurasi operasi lata. Sebagai contoh, kita boleh mengkonfigurasi atribut
Dalam Hibernate, kami boleh menggunakan pemuatan malas untuk meningkatkan prestasi capaian pangkalan data. Sebagai contoh, kita boleh mengkonfigurasi atribut
Dalam Hibernate, kita boleh menggunakan HQL (Bahasa Pertanyaan Hibernate) untuk menanyakan pangkalan data. HQL adalah serupa dengan SQL, tetapi ia adalah bahasa pertanyaan berorientasikan objek yang menggunakan konsep objek dan atribut dan bukannya jadual dan lajur.
Rumah Java javaTutorial Apakah kaedah pemetaan hubungan satu-ke-banyak dan banyak-ke-banyak dalam Java Hibernate

Apakah kaedah pemetaan hubungan satu-ke-banyak dan banyak-ke-banyak dalam Java Hibernate

May 27, 2023 pm 05:06 PM
java hibernate

Hibernate satu-ke-banyak dan banyak-ke-banyak

Hibernate ialah rangka kerja ORM yang sangat baik yang memudahkan akses data antara aplikasi Java dan pangkalan data hubungan. Dalam Hibernate, model data yang kompleks boleh dikendalikan menggunakan perhubungan satu-ke-banyak dan banyak-ke-banyak.

Hibernate's one-to-many

Dalam Hibernate, satu kelas entiti yang sepadan dengan berbilang kelas entiti lain dipanggil hubungan satu-dengan-banyak. Sebagai contoh, pesanan boleh sepadan dengan berbilang item pesanan (OrderItem), dan pengguna (Pengguna) boleh sepadan dengan berbilang pesanan (Pesanan). Untuk melaksanakan perhubungan satu-ke-banyak dalam Hibernate, anda perlu mentakrifkan atribut koleksi dalam kelas entiti untuk menyimpan berbilang objek yang berkaitan dan mengkonfigurasi perkaitan dalam fail pemetaan.

Konfigurasi satu-ke-banyak Hibernate

Dalam kelas entiti, kita perlu mentakrifkan atribut koleksi untuk menyimpan berbilang objek yang berkaitan, seperti ditunjukkan di bawah:

public class Order {
    private Long id;
    private Date orderDate;
    private List<OrderItem> items = new ArrayList<OrderItem>();
    // getters and setters
}
Salin selepas log masuk

Dalam fail pemetaan , kita perlu menggunakan tag <set> untuk mengkonfigurasi atribut koleksi dan hubungan, seperti yang ditunjukkan di bawah:

<class name="Order" table="orders">
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <property name="orderDate" column="order_date"/>
    <set name="items" table="order_items" inverse="true" cascade="all">
        <key column="order_id"/>
        <one-to-many class="OrderItem"/>
    </set>
</class>
Salin selepas log masuk

Antaranya, atribut <set> dalam tag name sepadan dengan atribut koleksi nama dalam kelas entiti, < Atribut 🎜> sepadan dengan nama jadual persatuan, atribut table menunjukkan sama ada hendak menyerahkan hubungan perkaitan kepada penyelenggaraan atribut koleksi, atribut inverse menunjukkan operasi lata, Teg cascade digunakan untuk menentukan lajur kunci asing dalam jadual persatuan, <key>Teg digunakan untuk menentukan kelas entiti yang berkaitan. <one-to-many>

Operasi satu-ke-banyak Hibernate

Dalam Hibernate, kami boleh mengakses objek yang berkaitan melalui sifat koleksi. Sebagai contoh, kita boleh mendapatkan semua item baris pesanan melalui kaedah

dan menambah item pesanan pada pesanan melalui kaedah getItems(), seperti yang ditunjukkan di bawah: addItem(item)

Order order = session.get(Order.class, orderId);
List<OrderItem> items = order.getItems();
OrderItem item = new OrderItem();
// set item properties
order.addItem(item);
Salin selepas log masuk

Hibernate's one-to -banyak perhubungan boleh menyelesaikan masalah sebenar Terdapat banyak model data yang kompleks dalam masalah Contohnya, dalam laman web e-dagang, pesanan (Pesanan) mungkin mengandungi berbilang item pesanan (OrderItem), dan item pesanan mungkin mengandungi berbilang produk. maklumat (Produk).

Hibernate's many-to-many

Hubungan banyak-ke-banyak dalam Hibernate mewakili korelasi antara berbilang kelas entiti. Sebagai contoh, seorang pelajar boleh mengambil beberapa kursus, dan satu kursus boleh diambil oleh beberapa pelajar. Untuk melaksanakan perhubungan banyak-ke-banyak dalam Hibernate, anda perlu mentakrifkan atribut koleksi dalam kelas entiti untuk menyimpan berbilang objek yang berkaitan dan mengkonfigurasi perkaitan dalam fail pemetaan.

Konfigurasi banyak-ke-banyak Hibernate

Dalam kelas entiti, kita perlu mentakrifkan atribut koleksi untuk menyimpan berbilang objek yang berkaitan, seperti ditunjukkan di bawah:

public class Student {
    private Long id;
    private String name;
    private List<Course> courses = new ArrayList<Course>();
    // getters and setters
}
Salin selepas log masuk

Dalam fail pemetaan , kita perlu menggunakan tag

untuk mengkonfigurasi atribut koleksi dan hubungan, seperti yang ditunjukkan di bawah: <set>

<class name="Student" table="students">
    <id name="id" column="id">
        <generator class="native"/>
    </id>
    <property name="name" column="name"/>
    <set name="courses" table="student_courses">
        <key column="student_id"/>
        <many-to-many column="course_id" class="Course"/>
    </set>
</class>
Salin selepas log masuk

Antaranya, atribut

dalam tag <set> sepadan dengan atribut koleksi nama dalam kelas entiti, < Atribut 🎜> sepadan dengan nama jadual persatuan, teg name digunakan untuk menentukan lajur kunci asing dalam jadual persatuan dan teg table digunakan untuk menentukan yang berkaitan kelas entiti. <key><many-to-many>Operasi banyak-ke-banyak Hibernate

Dalam Hibernate, kami boleh mengakses objek berkaitan melalui sifat koleksi. Sebagai contoh, kita boleh mendapatkan semua kursus yang diambil oleh pelajar melalui kaedah

dan menambah kursus kepada pelajar melalui kaedah

, seperti yang ditunjukkan di bawah: getCourses()

Student student = session.get(Student.class, studentId);
List<Course> courses = student.getCourses();
Course course = new Course();
// set course properties
student.addCourse(course);
Salin selepas log masuk
addCourse(course)Hibernate's many-to- banyak perhubungan boleh menyelesaikan masalah praktikal Terdapat banyak model data yang kompleks dalam sistem Contohnya, di sekolah, pelajar boleh mengambil beberapa kursus, dan kursus juga boleh diambil oleh berbilang pelajar.

Operasi lata Hibernate

Dalam Hibernate, kami boleh memudahkan operasi pangkalan data dengan mengkonfigurasi operasi lata. Sebagai contoh, kita boleh mengkonfigurasi atribut

dalam fail pemetaan untuk melaksanakan operasi lata, seperti yang ditunjukkan di bawah:

<set name="items" table="order_items" inverse="true" cascade="all">
Salin selepas log masuk
cascade Antaranya, atribut

boleh ditetapkan kepada

, cascade , all , save-update dan nilai lain masing-masing mewakili semua operasi, menyimpan dan mengemas kini operasi, memadam operasi, memadam operasi anak yatim, dsb. deletedelete-orphanOperasi lata Hibernate boleh memudahkan jumlah kod dan meningkatkan kecekapan pembangunan.

Pemuatan malas Hibernate

Dalam Hibernate, kami boleh menggunakan pemuatan malas untuk meningkatkan prestasi capaian pangkalan data. Sebagai contoh, kita boleh mengkonfigurasi atribut

dalam fail pemetaan untuk melaksanakan pemuatan malas, seperti yang ditunjukkan di bawah:

<set name="items" table="order_items" inverse="true" cascade="all" lazy="true">
Salin selepas log masuk
lazy Antaranya, atribut

boleh ditetapkan kepada

atau lazy , yang bermaksud masing-masing membolehkan kelewatan Muatkan dan muatkan dengan serta-merta. truefalsePemuatan malas Hibernate boleh meningkatkan prestasi capaian pangkalan data dan mengurangkan operasi pangkalan data yang tidak diperlukan.

Pertanyaan Hibernate

Dalam Hibernate, kita boleh menggunakan HQL (Bahasa Pertanyaan Hibernate) untuk menanyakan pangkalan data. HQL adalah serupa dengan SQL, tetapi ia adalah bahasa pertanyaan berorientasikan objek yang menggunakan konsep objek dan atribut dan bukannya jadual dan lajur.

Sebagai contoh, kita boleh menggunakan HQL untuk menanyakan semua kursus yang diambil oleh pelajar, seperti yang ditunjukkan di bawah:

String hql = "from Course as c where c.id in (select sc.course.id from StudentCourse as sc where sc.student.id = :studentId)";
Query query = session.createQuery(hql);
query.setParameter("studentId", studentId);
List<Course> courses = query.list();
Salin selepas log masuk

Hibernate的查询功能非常强大,可以灵活地满足不同的查询需求。

Atas ialah kandungan terperinci Apakah kaedah pemetaan hubungan satu-ke-banyak dan banyak-ke-banyak dalam Java Hibernate. 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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Akar Kuasa Dua di Jawa Akar Kuasa Dua di Jawa Aug 30, 2024 pm 04:26 PM

Panduan untuk Square Root di Java. Di sini kita membincangkan cara Square Root berfungsi di Java dengan contoh dan pelaksanaan kodnya masing-masing.

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Penjana Nombor Rawak di Jawa Penjana Nombor Rawak di Jawa Aug 30, 2024 pm 04:27 PM

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Nombor Armstrong di Jawa Nombor Armstrong di Jawa Aug 30, 2024 pm 04:26 PM

Panduan untuk Nombor Armstrong di Jawa. Di sini kita membincangkan pengenalan kepada nombor Armstrong di java bersama-sama dengan beberapa kod.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

See all articles