Skip to Sidebar Skip to Content
اقرأ-تك اقرأ-تك
ضيفنا الكريم

  • قائمة القراءة
  • تسجيل الدخول
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©
Object Relational Mappers
Object Relational Mappers
  • Databases
  • Backend

Object Relational Mappers

ورقة وقلم وتعالوا نتكلم عن واحدة من أهم المفاهيم في عالم صناعة البرمجيات واللي مبسطة علينا حياتنا اليومية كمبرمجين  ألا وهي الـ ORMs - Object Relational Mappers

  • Alaa Elkzaz by Alaa Elkzaz
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • 25 Apr, 2024
  • •
  • 1 min read
  • Share on X
  • Share on Facebook
  • Share on LinkedIn
  • Share on Pinterest
  • Email

ورقة وقلم وتعالوا نتكلم عن واحدة من أهم المفاهيم في عالم صناعة البرمجيات واللي مبسطة علينا حياتنا اليومية كمبرمجين  ألا وهي الـ ORMs - Object Relational Mappers


هنتكلم النهارده عن هي ايه و مميزاتها وعيوبها, ولكن خلونا نتفق إن شكل العناصر في عالم قاعدة البيانات مختلف عن عالم ال Backend ففي قواعد البيانات غالبًا بنتكلم في جداول وصفوف من البيانات في حالة الـ SQL أو البيانات تكون محطوطة في Blobs or Documents في حالة ال NoSQL 

بينما أثناء تصميم و كتابة ال Backend غالبًا بننظم البيانات ونتعامل معها على هيئة Objects ومش شرط كل البيانات في صف ما في ال Database  مثلاً تكون في Object واحد في الكود والعكس صحيح.

فلو بنحتفظ ببيانات الطالب في قاعدة البيانات هتكون على شكل صف أو عدد من الصفوف في جداول مختلفة ولكن في الكود البيانات دي علي شكل Object و بعد ما نستعيد البيانات من ال Database ب SQL Query لازم نعمل Mapping بين الاثنين بشكل يدوي! 

ولو كتبنا Pseudocode للعملية دي هتكون كدا:

StudentSql =  ‘select * from student where studentId=1
studentData = db.query(StudentSql)
Student studentObject = new Student()
studentObject.setID(studentData[0])
studentObject.setName(studentData[1])

طبعًا دا Pseudocode مبسط كثير من الخطوات المتواجدة في عملية ال Mapping دي واللي ممكن تبقى طويلة وصعبة ومرهقة وتخيل هتضطر تعمل دا في كل مرة تروح تجيب فيها أي بيانات من ال Database عشان تكون في هيئة صالحة للاستخدام في الكود!

وهنا تيجي ال ORM وهي طريقة Mapping بين البيانات في قاعدة البيانات والـ Code, ال ORM بتكون مكتبة Library قادرة تفهم الكود و قاعدة البيانات وتعمل هي الـ Mapping دا بدل ما نضطر نعمله بشكل يدوي.

فال Pseudocode بتاعنا هيتحول للشكل البسيط دا 

Student = dbORM.queryStudent(studentID=1)

وكل دا بإني بعرف Data Model أو Schema لل ORM وهي بتبتدي تتعامل مع ال Database  بنفسها لتكوين وطلب البيانات منها.


مميزات ال ORM

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن وتصفح كافة المقالات المميزة واستمتع بمحتوى حصري وابق على اطلاع دائم بالتحديثات المستمرة.

اشترك الآن 🚀

هل لديك حساب؟ تسجيل الدخول

في هذا المقال
اشترك الآن واكمل قراءة المقال
قناة اقرأ-تِك على التليجرام قناة اقرأ-تِك على التليجرام

مقالات ذات صلة

  • Redis Persistence 1 min read

    Redis Persistence

    Mahmoud Youssef Mahmoud Youssef • 4 Jul, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • How YouTube Supports Billions of Users With MySQL 2 min read

    How YouTube Supports Billions of Users With MySQL

    Mahmoud Youssef Mahmoud Youssef • 19 Apr, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • How Slack Handles Billions of Tasks in Milliseconds 3 min read

    How Slack Handles Billions of Tasks in Milliseconds

    Mahmoud Youssef Mahmoud Youssef • 11 Apr, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • How Netflix Migrates Critical Traffic at Scale With No Downtime 4 min read

    How Netflix Migrates Critical Traffic at Scale With No Downtime

    Mahmoud Youssef Mahmoud Youssef • 5 Apr, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • ElasticSearch 1 min read

    ElasticSearch

    Alaa Elkzaz Alaa Elkzaz • 31 Mar, 2025
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • Redis 1 min read

    Redis

    Alaa Elkzaz Alaa Elkzaz • 31 Mar, 2025
    Alaa Elkzaz Alaa Elkzaz
    Co-Founder & Software Engineer
    • Website
  • How Canva Built Scalable and Reliable Content Usage Counting Service 2 min read

    How Canva Built Scalable and Reliable Content Usage Counting Service

    Mahmoud Youssef Mahmoud Youssef • 17 Jan, 2025
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Deep Dive Into SQL Window Functions: Explained Visually Part II - Lead and Lag 5 min read

    Deep Dive Into SQL Window Functions: Explained Visually Part II - Lead and Lag

    Ahmed Anwar Ahmed Anwar • 8 Jan, 2025
    Ahmed Anwar Ahmed Anwar
    Software Technical Writer
    • Website
  • Change Data Capture at Pinterest 2 min read

    Change Data Capture at Pinterest

    Mahmoud Youssef Mahmoud Youssef • 21 Dec, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Demystifying SQL Unique Constraints 2 min read

    Demystifying SQL Unique Constraints

    Nahla Hatem Nahla Hatem • 8 Dec, 2024
    Nahla Hatem Nahla Hatem
    Data Engineer
    • Website

اشترك الآن بنشرة اقرأ‑تِك الأسبوعية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!

اقرأ-تك اقرأ-تك
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©