Object Relational Mapping یا به اختصار ORM مکانیسمی در صنعت توسعهٔ نرمافزار است که این امکان را در اختیار توسعهدهندگان قرار میدهد تا به صورت کاملاً شیئگرا اقدام به ارتباط با دیتابیس کنند و به خاطر ماهیت Abstraction (انتزاع) که در این مکانیسم وجود دارد، جزئیاتی که ممکن است پس از تغییر پایگاه داده ایجاد شود از دید دولوپر پنهان میمانند و همین مسئله فرآیند توسعهٔ نرمافزار را سرعت میبخشد.
در تکمیل نکات فوق، لازم به یادآوری است که ORM ارتباط مستقیمی با سورس دادهها (دیتابیس) دارا است به طوری که اگر دیتابیس یا ایپیآی مرتبط با آن تغییر کند، صرفاً نیاز به تغییر ORM داریم و اپلیکیشنی که از آن استفاده میکند بدون هیچگونه تغییری به کار خود ادامه خواهد داد بدین صورت که ORM این وظیفه را دارا است تا دیتای فراخوانیشده از دیتابیس را به صورت یک آبجکت درآورده و هر زمانی هم که نیاز به ثبت دادههای جدید یا ویرایش دادهها باشد هم ORM آنها را به دادههای قابلفهم برای سیستم مدیریت پایگاه دادهای همچون MySQL تبدیل خواهد کرد.
برای درک بهتر این موضوع، فرض کنیم میخواهیم با جدولی تحت عنوان user
که مسئول ذخیرهسازی کاربران است ارتباط برقرار سازیم که با مد نظر قرار دادن اصول OOP، میتوانیم کلاسی تحت عنوان User
بسازیم که حاوی یکسری اتریبوت از جمله first_name
و last_name
خواهد بود. حال اگر بخواهیم بدون استفاده از اوآرام و با استفاده از اسکیوال دادهٔ جدیدی در جدول user
ثبت کنیم خواهیم داشت:
INSERT INTO user (first_name, last_name) VALUES ('Ali', 'Tafreshi');
اما در یک دید کلی و با استفاده از یک اوآرام فرضی خواهیم داشت:
$user = new User();
$user->setFirstName('Ali');
$user->setLastName('Tafreshi');
$user->save();
میبینیم که فراخوانی متد ()save
عملکردی همچون کدهای اسکیوال فوق خواهد داشت مضاف بر اینکه دولوپر را از درگیر شدن با کدهای اسکیوال رها میسازد.
آشنایی با مزایای ORM
تا پیش از این برخی از مزایای ORM را برشمردیم اما اگر بخواهیم لیستوار به مهمترین فیچرهایش اشاره کنیم خواهیم داشت:
- ایجاد هماهنگی مابین دیتا تایپهای زبانهای برنامهنویسی و دیتا تایپهای پیشفرض در پایگاه داده (در حقیقت، گاهی اوقات دولوپر نیاز دارد تا دادهها را به منظور هماهنگی با دیتابیس تغییر دهد و این در حالی است که یک فریمورک اوآرام حرفهای این مسئولیت را بر عهده خواهد گرفت.)
- دولوپر از درگیر شدن با کدهای اسکیوال رها میشود و صرفاً با سینتکس زبان انتخابی خود (مثلاً PHP یا #C) درگیر خواهد بود.
- با توجه به فیلتر کردن دادهها، ORM میتواند تا حد قابلتوجهی جلوی حملاتی همچون SQL Injection را بگیرد.
- در صورت نیاز به تغییر دیتابیس مورد استفاده، ORM پروسهٔ مهاجرت را با کمترین میزان به ریفتکور کردن کدها هندل خواهد کرد.
در پایان به منظور آشنایی با فریمورکهای مربوطه میتوانید به مدخل List of ORM Software در ویکیپدیا مراجعه نمایید.