מודל נתונים שמייצג את המציאות
אני אתחיל עם דוגמא של חוסר מודל נתונים. ניקח את הדוגמא הקלאסית של עובדים ומחלקות. נניח שאתה רוצה לשלוף את שמות כל העובדים במחלקה X. קוד התוכנית שלך יבצע שליפה של מחלקה ע"פ השם X וכך ימצא את המפתח של הרשומה. אחר כך תהיה שליפה נוספת של כל השמות מרשומות העובדים שמפתח המחלקה שלהן זהה למפתח שמצאנו קודם. שמת לב באיזה מושגים השתמשנו כאן? רשומות, מפתחות, שליפה לפי ערך, השוואת מפתחות... אלה מושגים מעולם בסיסי הנתונים, ולא מהעולם האמיתי. מודל נתונים אומר שיש לך מחלקת "עובד" ומחלקת "מחלקה", ואתה יוצר אובייקטים שלהם. במקרה כזה מחלקת "מחלקה" הייתה מכילה מערך של אובייקטי "עובד". אתה רואה את ההבדל? כאן אנחנו אומרים "העובדים האלה מוכלים בתוך מחלקה X", ולא "לעובדים האלה יש מפתח מחלקה הזהה למפתח של מחלקה X". התפקיד של ORM הוא לקחת את מודל הנתונים שלך ולמפות אותו לטבלאות ולפקודות ה-SQL שבאמן מתרחשות מאחורי הקלעים. היתרון של זה הוא שתוכניתן האפליקציה לא צריך לחשוב במושגים מעולם בסיסי הנתונים - מבחינתו הוא עובד עם אובייקטים שמייצגים דברים בעולם האמיתי. ככל שהמערכת שלך יותר גדולה, יותר קל לראות כמה ORM מפשט לך את הקוד לעומת שימוש ישיר ב-SQL.