"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يعمل "MappedBy" على تسهيل العلاقات ثنائية الاتجاه في JPA وHibernate؟

كيف يعمل "MappedBy" على تسهيل العلاقات ثنائية الاتجاه في JPA وHibernate؟

تم النشر بتاريخ 2024-11-17
تصفح:572

How Does `MappedBy` Facilitate Bidirectional Relationships in JPA and Hibernate?

فهم MappedBy في JPA وHbernate

في أطر عمل رسم الخرائط الارتباطية للكائنات (ORM) مثل JPA وHbernate، MappedBy هو تعليق توضيحي مفيد لـ إنشاء علاقات ثنائية الاتجاه بين فئات الكيان. يتم استخدام هذا التعليق التوضيحي في سياق العلاقات واحد إلى متعدد وعلاقات متعدد إلى واحد.

الاستخدام الموصى به

الاستخدام الموصى به لـ MappedBy هو كما يلي:

  • علاقات رأس بأطراف: في علاقة رأس بأطراف، يجب أن يحتوي الجانب "الأطراف" من العلاقة (الجانب الذي يحتوي على مجموعة) على MappedBy شرح. يحدد هذا التعليق التوضيحي اسم الحقل في الجانب "الواحد" من العلاقة الذي يحمل قيد المفتاح الخارجي.
  • علاقات متعدد إلى واحد: في علاقات متعدد إلى واحد العلاقة، يجب أن يحتوي الجانب "الواحد" من العلاقة (الجانب الذي يحتوي على كائن مرجعي واحد) على التعليق التوضيحي MappedBy. يحدد هذا التعليق التوضيحي اسم الحقل في الجانب "الأطراف" من العلاقة الذي يحمل قيد المفتاح الخارجي.

الغرض من MappedBy

يخدم MappedBy عدة أغراض:

  • الاجتياز ثنائي الاتجاه: في العلاقات ثنائية الاتجاه، يتيح لك MappedBy اجتياز العلاقة في كلا الاتجاهين دون الحاجة إلى تعريفات مفاتيح خارجية صريحة في كلا الجدولين.
  • التحسين: من خلال تحديد ملكية العلاقة، يمكن لـ MappedBy تحسين أداء قاعدة البيانات عن طريق تجنب جداول الربط غير الضرورية أو قيود المفاتيح الخارجية.

مثال

في المثال المقدم، شركة طيران تمتلك العديد من AirlineFlights وAirlineFlights تنتمي إلى شركة طيران واحدة، MappedBy يجب أن تستخدم في فئة AirlineFlight كما يلي:

@Entity
@Table(name="AirlineFlight")
public class AirlineFlight {
    // ... other attributes ...

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="IDAIRLINE", nullable=false)
    @MapsId
    private Airline airline;
    // ... other attributes ...
}
في هذا المثال، يشير التعليق التوضيحي @MapsId إلى أن حقل IDAIRLINE في AirlineFlight يُستخدم كقيد المفتاح الخارجي لكيان شركة الطيران. باستخدام MappedBy هنا، يمكنك إنشاء علاقة ثنائية الاتجاه بين Airline وAirlineFlight دون الحاجة إلى قيود المفاتيح الخارجية في كلا الجدولين.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3