برنامج تعليمي Hibernate

في الآونة الأخيرة قمت بكتابة العديد من دروس Hibernate.

Hibernate هو واحد من أفضل أدوات Java ORM في السوق الحالي. لذلك، يُعتبر هذا المنشور كمؤشر لجميع المقالات حول دروس وأمثلة Hibernate. يمكنك متابعة هذه الدروس بتسلسل لتعلم Hibernate من البداية. من المرجح أنني سأقوم بإضافة المزيد من دروس Hibernate إلى القائمة، لذا قد ترغب في حفظ الرابط والتحقق منه بشكل دوري.

  1. دورة Hibernate يدعم Hibernate تعليمات JPA وهو مرن للغاية. يمكننا تكوينه باستخدام XML، ملفات الخصائص وبرمجياً. تعتبر هذه الدورة وسيلة رائعة للبدء في استخدام إطار Hibernate. تركز هذه الدورة على التكوينات المختلفة المطلوبة لـ Hibernate وتقديم أمثلة على الرسم التوضيحي البسيط القائم على XML وكذلك الرسم التوضيحي القائم على تعليمات JPA. ستتعلم أيضًا طرق مختلفة لتهيئة SessionFactory والمكونات المهمة في إطار Hibernate.
  2. تعيين الإرتباط One-to-One في Hibernate في معظم الأحيان، تكون جداول قواعد البيانات مرتبطة ببعضها البعض. هناك العديد من أشكال الارتباط – الارتباط واحد إلى واحد، الارتباط واحد إلى العديد، والعديد إلى العديد على المستوى العام، والتي يمكن تقسيمها بشكل أعم إلى تعيينات غير اتجاهية وثنائية الاتجاه. يوجّهك هذا البرنامج التعليمي خلال تنفيذ تعيين Hibernate One to One باستخدام تكوين XML وكذلك باستخدام تكوين تعليمات JPA.
  3. تعيين الإرتباط One-to-Many في Hibernate ببساطة، يعني تعيين واحد إلى العديد أن صف واحد في جدول يمكن أن يتم تعيينه إلى صفوف متعددة في جدول آخر. على سبيل المثال، فكر في نظام السلة حيث لدينا جدول آخر للعناصر. يمكن أن تحتوي السلة على عناصر متعددة، لذا هنا لدينا تعيين واحد إلى العديد. في هذا البرنامج التعليمي، ستتعلم كيفية تنفيذ تعيين واحد إلى العديد باستخدام تكوين XML ومن ثم باستخدام تعليمات Hibernate Annotations.
  4. تعيين الإرتباط Many-to-Many في Hibernate عادةً ما يتم تنفيذ التعيين الكثير إلى الكثير في قاعدة البيانات باستخدام جدول الانضمام، على سبيل المثال يمكننا أن نمتلك جدولين للسلة والعنصر وجدول Cart_Items لتعيين العديد إلى العديد. يمكن لكل سلة أن تحتوي على عناصر متعددة ويمكن لكل عنصر أن يكون جزءًا من عدة سلات، لذا لدينا تعيين كثير إلى كثير هنا. يشرح هذا البرنامج التعليمي حول تعيين Hibernate الكثير إلى الكثير غير الاتجاهي وكذلك التعيين ذو الاتجاهين.
  5. لغة استعلام الهايبرنيت (HQL) إطار الهايبرنيت يأتي مع لغة استعلام موجهة للكائنات قوية – لغة استعلام الهايبرنيت (HQL). إنها مشابهة جدًا لل SQL باستثناء أننا نستخدم الكائنات بدلاً من أسماء الجداول، مما يجعلها أكثر قربًا من البرمجة الموجهة للكائنات. يشرح هذا المقال حول HQL والعبارات المختلفة المدعومة بواسطة لغة HQL.
  6. استعلام SQL الأصلي للهايبرنيت يوفر الهايبرنيت خيار تنفيذ استعلامات SQL الأصلية من خلال استخدام كائن SQLQuery. يكون هذا مفيدًا جدًا عندما نريد تنفيذ استعلامات محددة لقاعدة البيانات غير المدعومة بواسطة واجهة برمجة التطبيقات Hibernate مثل تلميحات الاستعلام أو كلمة CONNECT في قاعدة بيانات Oracle.
  7. استعلام الهايبرنيت المسمى إذا كانت هناك الكثير من استعلامات HQL أو Native SQL، فسيتسببون في فوضى بالكود لأن جميع الاستعلامات ستكون منتشرة في جميع أنحاء المشروع. لهذا السبب، يوفر Hibernate استعلامات مسماة يمكننا تعريفها في موقع مركزي واستخدامها في أي مكان في الكود. يمكننا إنشاء استعلامات مسماة لكل من HQL و Native SQL. يمكن تعريف استعلامات Hibernate المسماة في ملفات التعيين Hibernate باستخدام عنصر query أو sql-query أو من خلال استخدام تعليقات JPA @NamedQuery و @NamedNativeQuery.
  8. معايير Hibernate Hibernate يوفر واجهة برمجة تطبيقات (API) للمعايير التي تعتمد أكثر على الكائنات للاستعلام عن قاعدة البيانات والحصول على النتائج. لا يمكننا استخدام المعايير لتشغيل استعلامات التحديث أو الحذف أو أي عبارات DDL. يتم استخدامه فقط لاسترجاع النتائج من قاعدة البيانات باستخدام نهج أكثر توجهًا نحو الكائنات. بعض استخدامات واجهة برمجة تطبيقات المعايير الشائعة هي الإسقاط التي يمكننا استخدامها لوظائف التجميع مثل sum()، min()، max() إلخ، قائمة الإسقاط لاسترجاع الأعمدة المحددة فقط، ترتيب النتائج إلخ.
  9. ذاكرة التخزين المؤقت المستوى الأول في Hibernate يمكن أن تكون ذاكرة التخزين المؤقت في Hibernate مفيدة للغاية في تحسين أداء التطبيق بسرعة إذا استُخدمت بشكل صحيح. الفكرة وراء الذاكرة المؤقتة هي تقليل عدد استعلامات قاعدة البيانات، وبالتالي تقليل وقت التشغيل للتطبيق. ترتبط ذاكرة التخزين المؤقت المستوى الأول في Hibernate بكائن الجلسة. يتم تمكين ذاكرة التخزين المؤقت المستوى الأول في Hibernate بشكل افتراضي ولا يوجد طريقة لتعطيله. ومع ذلك، يوفر Hibernate طرقًا يمكن من خلالها حذف الكائنات المحددة من التخزين المؤقت أو مسح التخزين المؤقت بالكامل. لن يكون أي كائن مخزن في جلسة مرئيًا لجلسات أخرى وعند إغلاق الجلسة، ستفقد جميع الكائنات المخزنة أيضًا.
  10. تخزين مؤقت من المستوى الثاني في Hibernate باستخدام EHCache تشمل موفرات ذاكرة التخزين المؤقت من المستوى الثاني في Hibernate EHCache وInfinispan، ولكن EHCache هي أكثر شيوعًا لأنه من السهل دمجها وتدعم جميع استراتيجيات تخزين مؤقت Hibernate. يقدم هذا البرنامج التعليمي مثالًا كاملاً لدمج EHCache مع إطار Hibernate.
  11. حصول Hibernate مقابل تحميل تقدم جلسة Hibernate طرقًا مختلفة لاسترجاع البيانات من قاعدة البيانات. من بينها – get() و load(). هناك أيضًا العديد من الطرق المكدسة لهذه الوظائف يمكننا استخدامها في ظروف مختلفة. على النظرة الأولى، يبدو كل من get() و load() متشابهين لأن كلاهما يسترجع البيانات من قاعدة البيانات. ومع ذلك، هناك بعض الاختلافات بينهما، يشرح هذا البرنامج التعليمي ذلك بشفافية مع رمز مثال.
  12. حفظ Hibernate مقابل الاستمرار تعد جلسة Hibernate واجهة بين تطبيق Java وإطار Hibernate. يشرح هذا البرنامج التعليمي أهم الطرق في جلسة الحفظ والتحديث للبيانات في الجداول – save، saveOrUpdate، persist، update وmerge.
  13. افتح الجلسة في هايبرنيت مقابل الحصول على الجلسة الحالية SessionFactory في Hibernate هي فئة المصنع التي نحصل من خلالها على جلسات ونقوم بعمليات قاعدة البيانات. توفر SessionFactory في Hibernate ثلاثة طرق يمكننا من خلالها الحصول على كائن Session – getCurrentSession() و openSession() و openStatelessSession(). يشرح هذا البرنامج التعليمي كل واحدة منها مع رمز مثالي.
  14. دمج هايبرنيت مع log4j Hibernate 4 يستخدم تسجيل JBoss ولكن log4j هو أشهر إطار تسجيل. برنامج تعليمي سريع يشرح كيفية دمج تسجيل log4j مع إطار hibernate.
  15. مثال DataSource JNDI في هايبرنيت تومكات في معظم الأحيان يتم استخدام إطار hibernate في تطبيقات الويب التي تعمل في تومكات أو أي حاوية خدمة سيرفلت أخرى. يمكن لهايبرنيت استخدام مصدر DataSource المعرف كمورد JNDI في الحاوية، وهذا هو النهج المفضل للسماح لحاوية الخدمة بمعالجة اتصالات قاعدة البيانات باستخدام تجميع الاتصالات.
  16. تكامل Spring مع Hibernate Spring هو أحد أكثر الأطر Java EE استخدامًا و Hibernate هو أكثر إطار ORM شهرة. لهذا السبب، يتم استخدام مزيج Spring Hibernate كثيرًا في تطبيقات الشركات. يستخدم هذا البرنامج التعليمي Spring 4 ويدمجه مع Hibernate 3 ثم يقوم بتحديث نفس المشروع لاستخدام Hibernate 4.
  17. مثال على Spring MVC Hibernate يتقدم هذا البرنامج التعليمي ويشرح كيفية دمج Hibernate مع Spring MVC واستخدام إدارة العمليات التنفيذية الصريحة في Spring بدلاً من استخدام إدارة العمليات التنفيذية لهيبرنيت.
  18. مثال على تكامل Struts2 Hibernate يشرح هذا البرنامج التعليمي الطريقة العامة لدمج Hibernate مع أي تطبيق ويب من خلال استخدام ServletContextLister، ويستخدم المثال Struts2 مع Hibernate ولكن التكامل خلف الكواليس يتم باستخدام تقنية Servlet فقط. هذا يختلف عن تكامل Spring لأن Struts2 لا يوفر أي دعم مدمج لتكامل Hibernate.
  19. مثال على محقق Hibernate التحقق من البيانات هو جزء لا يتجزأ من أي تطبيق. إنه مهمة قطعية تحدث على طبقة العرض، وطبقة الأعمال وكذلك طبقة البقاء. لهذا السبب، توفر JSR-303 معياراً قائماً على الإشارات لتطبيق التحقق لخصائص جافا بين. يوفر Hibernate Validator الدعم لـ JSR-303 ويظهر هذا البرنامج التعليمي استخدامه مع مثال بسيط.
  20. ملحق أدوات Hibernate لبرنامج Eclipse إذا كنت قد عملت على مشاريع Hibernate، يجب أن تكون ملمًا بالكثير من الخصائص التي نحتاجها لتعيين Hibernate وملف التكوين. بدون أي أداة مناسبة يمكن أن ترشدنا في البحث عن الخصائص الصحيحة، سيصبح من الصعب جدًا تكوين تطبيقنا بشكل صحيح. هنا يأتي دور ملحق أدوات Hibernate لبرنامج Eclipse وهو ملحق يجب أن يكون متاحًا في مشاريع Hibernate.
  21. أسئلة مقابلة Hibernate إن معرفة جيدة بإطار عمل Hibernate هي نقطة إيجابية لمقابلات العمل التي تستند إلى Java، ولهذا السبب كتبت هذا المنشور. يحتوي على معظم الأسئلة المهمة المتعلقة بإطار عمل Hibernate مع إجابات مفصلة. يجب عليك قراءة هذه الأسئلة قبل الذهاب للمقابلة لتحسين معرفتك.

دورة تعليمية Hibernate – إصلاحات الأخطاء الشائعة

  1. كيفية تكوين hibernate.cfg.xml للعمل دون اتصال بالإنترنت
  2. org.hibernate.AnnotationException: لم يتم تحديد معرف لفئة الكيان
  3. org.hibernate.HibernateException: get ليس صالحًا بدون عملية نشطة
  4. org.hibernate.HibernateException: لم يتم تكوين CurrentSessionContext
  5. برنامج Hibernate لا ينتهي
  6. لا يمكن أن يكون الوصول إلى معلومات DialectResolutionInfo فارغًا عندما لا يتم تعيين ‘hibernate.dialect’

Source:
https://www.digitalocean.com/community/tutorials/hibernate-tutorial