تحديد العلاقات مع التعليقات التوضيحية في Hibernate 4 باستخدام Spring
لتنفيذ أنواع مختلفة من العلاقات باستخدام التعليقات التوضيحية في Hibernate 4 للفئات المتوفرة، Foo وBar، دعنا نتعمق في التفاصيل.
العلاقة أحادية الاتجاه من واحد إلى عدة:
قم بتكوين فئة Foo باستخدام التعليق التوضيحي @OneToMany والقائمة الملكية. اترك فئة Bar دون تغيير. يؤدي هذا إلى إنشاء علاقة رأس بأطراف حيث يمكن أن يحتوي Foo على العديد من كائنات Bar المرتبطة، لكن لا يمكن لـ Bar الرجوع مرة أخرى إلى Foo.
علاقة رأس بأطراف ثنائية الاتجاه (تتم إدارتها بواسطة Foo.class) ):
استخدم التعليق التوضيحي @OneToOne مع cascade = CascadeType.ALL على Foo.class. أضف تعليقًا توضيحيًا @JoinColumn يحدد العمود الموجود في Bar.class الذي يجب استخدامه للصلة. بالنسبة إلى Bar.class، استخدم التعليق التوضيحي @OneToOne وحدد MappedBy = "bar" للإشارة إلى أن العلاقة تتم إدارتها بواسطة Foo.class.
علاقة أحادية الاتجاه أحادية الاتجاه باستخدام المستخدم- جدول الانضمام المُدار:
استخدم التعليق التوضيحي @OneToMany مع التعليق التوضيحي @JoinTable لتحديد جدول ربط منفصل. حدد أعمدة الربط باستخدام التعليقات التوضيحية @JoinColumn على كلا الجانبين. استخدم فئة إضافية لتمثيل جدول الانضمام، إذا لزم الأمر.
علاقة رأس بأطراف ثنائية الاتجاه باستخدام تعيين المفاتيح الخارجية:
على Foo.class، استخدم @OneToMany(mappedBy = "bar") لتعيين العلاقة. في Bar.class، استخدم @ManyToOne(cascade = { CascadeTyep.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }) مع تعليق توضيحي @JoinColumn.
ثنائي الاتجاه متعدد إلى متعدد باستخدام السبات. -جدول الانضمام المُدار:
استخدم @ManyToMany على كل من Foo.class وBar.class، واستخدم تعليقًا توضيحيًا @JoinTable لجدول الانضمام، مع تحديد أعمدة الربط.
متعدد الاتجاه ثنائي الاتجاه باستخدام كائن جدول الانضمام الذي يديره المستخدم:
على غرار مثال واحد إلى متعدد أحادي الاتجاه، استخدم @OneToMany مع تعليق توضيحي @JoinTable. قم بإنشاء فئة منفصلة لتمثيل جدول الانضمام وتعيين العلاقة على كل من Foo.class وBar.class باستخدام @ManyToOne.تحديد نوع الجلب:
استخدم fetchType .LAZY لتأخير تحميل المجموعات ذات الصلة حتى يتم الوصول إليها. استخدم fetchType.EAGER لتحميل المجموعة على الفور، ولكن لاحظ أنه يمكن أن يؤثر على الأداء. خذ بعين الاعتبار استخدام Hibernate.initialize() في فئة الخدمة الخاصة بك لتهيئة المجموعات المحملة ببطء يدويًا لحالات استخدام محددة.
تحديد اتجاه التتالي:
استخدم التعليق التوضيحي @Cascade لـ تحديد الخيارات المتتالية. بشكل عام، تتالي التغييرات في اتجاه علاقة التملك. تجنب التحديثات أو عمليات الحذف المتتالية من الطفل إلى الأصل إذا لم يكن ذلك منطقيًا في سياق التطبيق.
إزالة اليتيم:
قم بتعيين orphanRemoval = true على تعليق توضيحي @OneToMany لجعل Hibernate يحذف الكائنات المعزولة تلقائيًا (أي تلك غير المرتبطة بأي كائن أصل آخر) عند إزالتها من المجموعة الموجودة على الكائن الأصل.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3