Rumah >Java >javaTutorial >Apakah kaedah pemetaan hubungan satu-ke-banyak dan banyak-ke-banyak dalam Java Hibernate
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.
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.
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 }
Dalam fail pemetaan , kita perlu menggunakan tag ace372f96ca3ec664acb3aaa2421b04c
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>
Antaranya, atribut ace372f96ca3ec664acb3aaa2421b04c
dalam tag name
sepadan dengan atribut koleksi nama dalam kelas entiti, 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, 42538adbdb6240b2b083a000a615d5bd
Teg digunakan untuk menentukan kelas entiti yang berkaitan. f7850c684431509b294b210c6237726e
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);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 }Dalam fail pemetaan , kita perlu menggunakan tag
untuk mengkonfigurasi atribut koleksi dan hubungan, seperti yang ditunjukkan di bawah: ace372f96ca3ec664acb3aaa2421b04c
<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>Antaranya, atribut
dalam tag ace372f96ca3ec664acb3aaa2421b04c
sepadan dengan atribut koleksi nama dalam kelas entiti, 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. 42538adbdb6240b2b083a000a615d5bd
f28ba8748e989755003e512f5a4f884c
Operasi banyak-ke-banyak Hibernate
, 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);
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
<set name="items" table="order_items" inverse="true" cascade="all">
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. delete
delete-orphan
Operasi lata Hibernate boleh memudahkan jumlah kod dan meningkatkan kecekapan pembangunan.
Pemuatan malas Hibernate
<set name="items" table="order_items" inverse="true" cascade="all" lazy="true">
lazy
Antaranya, atribut boleh ditetapkan kepada atau lazy
, yang bermaksud masing-masing membolehkan kelewatan Muatkan dan muatkan dengan serta-merta. true
false
Pemuatan malas Hibernate boleh meningkatkan prestasi capaian pangkalan data dan mengurangkan operasi pangkalan data yang tidak diperlukan.
Pertanyaan Hibernate
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();
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!