علي عبدالعزيز الزبيدي
علي عبدالعزيز الزبيدي

@AliAAlzubaidi

16 تغريدة 11 قراءة Feb 21, 2021
كعادة الأخ العزيز ومهندسنا الفاضل أحمد الجابري دوما يثري المحتوى العربي من واسع علمه وإدراكه وحبيت اخذ جانب من حديثة حول الـ ORM واتوسع فيه وأحاول اقدم ما استطيع لتوضيح هذا المفهوم لمن يجهله فيما يلي من تغريدات:
أولا أي شيء اقوله هنا هو (مسودة قابلة للأخذ والرد والتعليق والتوبيخ الخ .. خذ راحتك😀). طيب نبدأ و نأخذ نظره تاريخية على ما قد يعد ممارسة تقليدية ناضجة ويفضلها عدد كبير من المبرمجين المفضلة عند التعامل برمجيا مع قواعد البيانات وهو عبر الصديق الحميم (تعليمات SQL).
وبما أنني ذكرت الـ SQL فطبيعي انك تروح اول شيء تنشيء قاعدة بيانا وجداول ووتسوي (علاقات) بينها والخ مثل الصورة التالية وفي افضل الاحوال تنشئها باستخدام الواجهة المرئية لقاعدة البيانات عندك كما هو حاصل في phpmyAdmin على سبيل المثال. zetcode.com.
وبعد كذا في كودك، راح تتصل بقاعدة البيانات ومن ثم تعمل استعلامات مكتوبة بتعليمات SQL وتضمنها داخل كودك (داخل جافا مثلا) وبعد كذا تروح ذهابا ومجيئا بين SQL و Java طوال الوقت من اجل فرز نتيجة الاستعلام او اجراءات على قاعدة البيانات وهكذا كما هو في الصور التالية:
ما سبق هو فقط لمجرد المثال لا أكثر وكذلك من باب أبدأ مع القاري بما يعرف أولا ومن ثم انتقل به لما تريده أن يعرف. فنحن نتحدث عن التعامل مع لغتين مختلفة الاهداف والمبرمج مطلوب منه يضع بالحسبان التناغم والانسجام بينهما ويحرص على تعويض المفقود بينهم والتجسير بما يؤدي لتكاملهم.
من باب التوضيح، نحن نتحدث بالخصوص عن أنظمة RDBMS وهي اختصار لـ Relational Database Management System وهي النظم المعتادة التي تعتمد على SQL. ولذلك نستبعد من حديثنا أنواع الـ NoSQL المعروفة. فكما نعرف أن انظمة RDBMS كما هو الحال مع MySQL/MariaDB يعتمد على الجداول والعلاقات بينها
((وخطين من عندك بالله تحت كلمة علاقات وجداول)) فيما يخص الـ Rational Databases وعلى النقيض فيه عندنا قواعد NoSQl او بما يدعى Document-Oriented database مثل MangoDB أو couchDB فلذلك الـ NoSQL ليس محل بحثنا ونحن مهتمين هنا بـ Rational Databases.
طيب وين المشكلة؟ بعض منها مثلا هو اختلاف تنظيم البيانات في قواعد البيانات عن تنظيم الـ OOP فمثلا عندنا في قواعد البيانات منظمة على شكل جداول مرتبطة، بينما تنظيم البيانات في الـ OPP عبارة عن شبكة من الـ objects
ولما اقول object حط في بالك حاجه مثل الصورة التالية: مثلا هذا طالب وله مجموعة من الخصائص عبارة معرف واسم اول واخير وايميل ومجموعه من الـ Setter/getters بحيث نعين قيم هذه الخصائص ونستعلم عنها. هذا في عالم الـ OPP.
طيب واذا سوينا تحليل ونمذجة بمفاهيم الـ OOP وجينا نعمل ما يقابله في قواعد البيانات أو العكس بدأنا بنمذجة قواعد البيانات ومن ثم جينا نعمل نمذجة الـ OPP. في الأنظمة الكبيرة راح نلاقي تعقيدات بالغة وتعارضات كثيرة ملخصة في الجدول التالي: tutorialspoint.com
الآن دعنا نلقي نظرة على الـ ORM والذي هو اختصار لـ Object Relational Mapping والموضوع طويل ولكن بنحاول نبسطه والتبسيط يخون الكثر من التفاصيل. باختصار شديد الموضوع في رأيي الشخصي توفير framework يسهل للمبرمج التعامل مع OPP و Rational databases بأقل جهد ممكن (بتفائل شديد).
إذا الـ ORM هو Framework في رأيي يمكن المحلل والمصمم من التعامل مع الـ Framework فقط دون الحاجة لمتخصصين في الـ OPP على حدة ومتخصصين بـ Rational Databases ومن ثم الحرص على ايجاد التناغم بينهما والعمل على حل التعارضات والمشاكل كما هو في الجدول التوضيحي أعلاه.
كذلك يمكن للمبرمج التعامل مع الـ Framework فقط دون الحاجه لاستخدام تعليمات الإستعلام SQL .. يستخدم فقط اللغة التي يتعامل معها وهي Java مثلا ويحتاج ان يفهم هذا الـ Framework مثلا Hibernate/JPA. فمسألة تحويل هذه التعليمات وبما يقابلها في عالم database هو مسؤولية الـ framework
ومن هنا جاء الإسم Object Relational Mapping وخاصة كلمة Mapping بحيث ما يكتب بالجافا هناك ما يقابله في عالم قواعد البيانات. وتزداد اهمية هذا الامر خاصة عند تطور الانظمة والحاجة لاجرائات تعديلات أو استبدال نظام قاعدة بيانات باخر، فتجد العملية مربكة بشكل كبير وليست بالأمر السهل.
هنا بعض المشاكل والتعقيدات التي أتت بها الـ ORM بمثل ما أتت من حسنات ولكن اترك لكم العودة لتغريدات الاستاذ الفاضل أحمد الجابري للإطلاع عليها واذا وردتني فرصة مناسبة ساكتب عنها من وجهة نظري الشخصية بتفصيل اكبر أكبر عندما يتاح لي وقت لذلك. ومثل ما قلنا هذه مسودة تقبل الاخذ والرد 😅
يمكن تشوفني اشكل بين OPP او OOP كاخطاء املائية.. والحقيقة أنا مقصدي هو OOP وكذلك Rational Database والمقصد Relational Database والمهم الله يسامح الإكمال التلقائي.
ولكن مثل ما قلنا هذه مسودة وتنتظر اثرائكم لها والتعليق عليها.

جاري تحميل الاقتراحات...