ORM \ מיפוי אוביקטי-רלציוני (Object Relational Mapping), במדעי המחשב היא טכניקה להמרת מידע בין שתי שפות תכנות עם מערכות טיפוסים (Type Systems) בלתי תואמות.
יש מגוון כלים בשוק, חלקם בשימוש מסחרי בעוד אחרים בקוד פתוח, בנוסף, ישנם מתכנתים שבוחרים לבנות כלי ORM עבור פונקציה ספציפית או פרויקט.
בתכנות מונחה עצמים כל משימה או יישות אמורים להיות מיוצגים באובייקטים, ערכים אלו הם בדרך כלל לא סקלריים.
אם ניקח לדוגמא מקרה שבו אנו רוצים לייצג רשומה בספר מתכונים, לכל מתכון יש מספר מרכיבים, כמו כן שם וכו’.
אם נרצה לייצג את הדוגמא הזו בשפת תכנות מונחית עצמים, נייצר אובייקט בשם מתכון, לכל אובייקט יהיו משתני מחלקה (תכונות) עם נתונים לגבי הרשומה כמו שם, רשימת מרכיבים –
רשימת המרכיבים גם היא תיוצג על ידי רשימה של אובייקטים מסוג מרכיב שגם לו יהיו תכונות משלו, וכן הלאה.
בנוסף, לכל אובייקט ישנן מתודות שונות שאמורות לעזור בתהליך הפיתוח, כמו למשל מתודה שמחזירה את שם המתכון, או את רשימת השמות של המרכיבים ועוד.
לעומת זאת, רבים ממסדי הנתונים הפופולריים למשל מסדים מבוססי SQL, אינם מונחי עצמים, ולמעשה רק מאחסנים ויודעים לבצע מספר מניפולציות על ערכים סקלריים, כמו מחרוזות וערכים מספריים (integer, float, double).
ובמקביל לארגן את המידע בטבלאות. ישנן שתי חלופות לטיפול באי ההתאמה הזו.
הראשונה היא להשתמש בערכים סקלריים פשוטים גם בתוך הקוד אופציה, אופציה זו פחות מומלצת כי בכך אתה מאבד את היכולות של מערכת מונחית עצמים.
או לחילופין בשימוש במערכת ORM המתכנת ממיר את התכונות של האובייקטים בערכים פשוטים יותר לשמירה במסד הנתונים.
מדובר בתהליך מורכב שבבסיסו לפרוט בצורה נכונה ויעילה את המידע המורכב שמיוצג באובייקט, לרשומות פשוטות במסד הנתונים.
אם תהליך זה נעשה בצורה מלאה, האובייקט יתמיד בין ריצות על ידי טעינה מבסיס הנתונים, וניתן תמיד יהיה לטעון אותו מחדש (Persistent).
מחפש פיתוח ותמיכה ביישומים מבוססי ORM? פנה עכשיו וקבל הצעה אטרקטיבית!