logo-mini

به اشتراک گذاری این پست

ORM چیست؟

 

زمان به ما ثابت کرده که پایگاه داده‌های رابطه‌ای ساختار مناسبی برای ذخیره‌سازی داده‌ای هستند، همچنین به این نتیجه رسیده‌ایم که برنامه‌نویسی شیءگرا یک رویکرد بسیار خوب و قوی برای پیاده‌سازی سیستم‌های بسیار پیچیده می‌باشد.
ORM عملا یک لایه مترجم بین زبان برنامه‌نویسی و پایگاه داده رابطه‌ای است که این دو را به هم تبدیل می‌کند و در عمل باعث می‌شود که این دو حیطه کاملا متفاوت زبان یکدیگر را به خوبی بشناسند و با هم تبادل اطلاعات داشته باشند. این مفهوم که مانند یک پل بین این دو حیطه می‌ماند قابلیت‌های زیادی را برای ما تهیه می‌نماید.
به طور اختصار می‌توان گفت که وظیفه ORM پایدار کردن خودکار آبجکت‌های موجود در یک برنامه روی جداول در پایگاه داده رابطه‌ای می‌باشد که برای این کار از متادیتاهایی برای نگاشت بین آبجکت‌ها و پایگاه داده استفاده می‌نماید.
در این زمینه به نکات زیر توجه نمایید که شاید برای روشن شدن اینکه چرا ORMها بسیار برای کار مناسب هستند، به شما کمک نمایند:

 

۱- تجارب نشان می‌دهند که تا حدود ۳۰ درصد از کدهایی که برای نوشتن برنامه در NET. لازم است مربوط به ثبت داده و کار با داده‌ها می‌باشد.

۲- برای نوشتن کدهای SQL در NET. باید آن‌ها را به صورت رشته متنی یا به صورت stored procedure در خود پایگاه داده می‌نوشتیم که این کار باعث بروز خطا در زمان اجرا می‌شد و ما هیچ کنترلی برای بررسی خطا در زمان کامپایل برنامه نداشتیم.

۳- یکی از پرهزینه‌ترین بخش‌های هر پروژه‌ای، مدل‌سازی آن است. مدل‌سازی در زبان شیءگرا کاملا با مدل‌سازی در پایگاه داده‌های رابطه‌ای متفاوت است. ما می‌توانیم این مدل‌سازی را که بین هر دو حیطه مشترک باشد به صورت یک به یک انجام دهیم یعنی هر جدول در پایگاه داده با یک موجودیت (entity) در کلاس‌هایمان معادل شود و هر ستون از جدول با مشخصه (property) آن کلاس و کاملا به صورت معادل پیاده‌سازی شود ولی این کار باعث می‌شود که ما قابلیت‌های زیادی را که در زبان‌های شیء‌گرا داریم مانند ارث‌بری و چندریختی را از دست بدهیم.

۴- با ORM دیگر نیاز ندارد که خودمان را درگیر بخش‌های سطح پایین و خسته‌کننده هر سیستم کنیم و این باعث تمرکز بهتر و بیشتر ما روی مشکلات کاری می‌شود، در نتیجه به بهره‌وری بالاتری دست میابیم.
۵- ساده‌سازی سیستم باعث خوانا شدن آن و جلوگیری از اتلاف زمان می‌شود. ما به جای آنکه کدهای زیادی را برای کارهای کوچک بنویسیم، با مقدار کم کد می‌توانیم همان کار را انجام دهیم. از همه مهمتر اینکه سیستمی با مقدار کد کمتر، بهتر بازسازی می‌شود.

۶- خیلی‌ها از ORM استفاده نمی‌کنند به دلیل اینکه فکر می‌کنند باعث افت کارایی (performance) می‌شوند. این گفته تا حدودی صحیح است ولی این یک گفته کامل نیست. اولا ما باید ببینیم که ارجحیت ما چیست. باید بیان کرد که ORM ها اگر درست استفاده شوند تاثیر منفی بسیار کمی روی کارایی خواهند داشت، در عوض در کنار آن‌ها ما چیزهایی بدست می‌آوریم که بسیار ارزشمندتر است. لازم به ذکر است که ORMهای قوی مانند NHibernate حتی می‌توانند از ADO .NET کلاسیک هم کارایی بهتری داشته باشند. اگر از cache و عملیات دسته‌ای (batching) استفاده نماییم، می‌توانیم به کارایی حتی بالاتر از ADO .NET کلاسیک دست یابیم.

۷- یک ORM قوی مانند NHibernate ، برنامه شما را از نوع پایگاه داده و SQL Dialect استفاده شده، جدا می‌کند. این کار باعث می‌شود که استقلال شما نسبت به نوع پایگاه داده حفظ شود.

محمدرضا محمودی

محمدرضا محمودی هستم ، سعی شده در این وبلاگ مطالب مفید و کارامدی قرار بگیره ، از اینکه وقت میگذارید و مطالب رو مطالعه میکنید متشکرم... حتما نظرات خودتون رو ارسال کنید


نظر بدهید