آشنایی با ORM
مفهوم ORM چیه؟
اصطلاح ORM مخفف عبارت Object Relational Mapping هستش. معنای لغوی این عبارت به فارسی خیلی خوب و دقیق نیست ولی میشه، رابطهی نقشه برداری به شی. در واقع راهی هست که با استفاده از زبان برنامه نویسی و با کمک گرفتن از پارادایم شی گرایی جدولها و ستونهای مربوط به دیتابیس رو بتونیم توسعه بدیم.
به زبون سادهتر بخوایم توضیح بدیم ORM یعنی ابزاری که به برنامه نویسی کمک میکنه و دیگه برنامه نویس قرار نیست کوئری مخصوص به هر نوع دیتابیسی رو بلد باشه و بنویسه. میگه تو کاریت نباشه به queryها و فقط کافیه object رو با استفاده از زبان برنامه نویسی که میخوای، درست کنی و من برات داخل دیتابیس درستش میکنم و query مورد نظرت رو هم تولید میکنم.
مزایای استفاده از ORMها
- عدم تکرار کد: کدهای ما یکبار نوشته میشه و از این به بعد هر جا که بهشون نیاز داشته باشیم و بخوایم از دیتابیس استفاده کنیم از کلاسهای ساخته شده توی همون ORM استفاده میکنیم.
- آتومیت بودن اکثر عملیاتها
- عدم نیاز به نوشتن کدهای SQL: خیلی از جاها نیاز نیست که کدهای اختصاصی sql بنویسیم و همین کلاسها که توی ORM هستن نیاز ما رو برطرف میکنن.
- استفادهی راحت از ترنزاکشنها
- اتصال راحت به دیتابیسهای مختلف بدون نیاز به تغییر زیاد توی مدلها
- استفاده از ارثبری توی مدلها برای فیلدهای مشترک بین مدلها
معایب استفاده از ORM
- هر دیتابیس لایبرری اختصاصی خودش رو داره و نیاز داره که شما این لایبرری و سینتکسش رو یاد بگیرید.
- پرفورمنس ORM ها برای کوئریهای ساده عالیه ولی کوئریهای بزرگ و پیچیده این پرفورمنس رو پایین میاره و کسی که تخصصی sql کار میکنه میدونه که کوئریهای خود اون دیتابیس، پرفورمنس بهتر و سریعتری دارن.
- اگر به خود اون دیتابیس آشنایی نداشته باشید ممکنه که کوئریهایی بزنید که پرفورمنس کار رو بدتر کنن.
در پایان
هر فریمورک برای خودش یه ORM هم طراحی کرده برای مثال فریمورک جنگو خودش Django_ORM رو داره که از طریق اون راحت با انواع دیتابیس میتونید کار کنید.
برای آشنایی بیشتر یه مینی دوره خوب هم سایت کافی کد کمپ در مورد ORM ها منتشر کرده که میتونید ببینید تا بهتر با ORM و نحوهی کار کردن و ... آشنا بشید. پیشنهاد میکنیم که حتما این دوره رو ببینید تا همراه با کد زدن با PRMها بیشتر آشنا بشید. این دوره سه تا سرفصل اصلی داره و حدودن یک ساعت و نیم زمان این دوره هستش. در ضمن این دوره رایگانه. لینکش رو هم براتون همینجا میزاریم. حتما سر بزنید. مینی دورهی ORM چیه و چرا باید از اون استفاده کرد؟
مطلبی دیگر از این انتشارات
الگوهای طراحی (Design Patterns)
مطلبی دیگر از این انتشارات
مفهوم linting چیه و چه کاربردی توی برنامهنویسی داره؟
افزایش بازدید بر اساس علاقهمندیهای شما
تحلیل الگوریتم رتبه بندی گوگل : معماری پردازش پیشنهادات خودکار