خانه > NHibernate, Persian Contents > ORM چیست؟ چرا بهتر است که از آنها استفاده نماییم؟

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 استفاده شده، جدا می‌کند. این کار باعث می‌شود که استقلال شما نسبت به نوع پایگاه داده حفظ شود.

دسته‌ها:NHibernate, Persian Contents برچسب‌ها: , , ,
  1. Alireza Mirzaei
    مه 24, 2010 در 2:49 ب.ظ.

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

    • مه 25, 2010 در 10:00 ق.ظ.

      ممنونم دوست عزیز
      به امید خدا در پست های آینده به جزئیات هم خواهم پرداخت.

  2. مه 27, 2010 در 6:32 ق.ظ.

    سلام،
    چه جالب! من هم همین دیروز داشتم ی چیزایی راجع به ORM می‌نوشتم.

  3. hosseinsinohe
    مه 27, 2010 در 3:51 ب.ظ.

    تشکر می کنم و امیدوارم مبحث مربوط به ORM را به صورت حرفه ای تر و با جزییات ادامه دهید

    • مه 27, 2010 در 4:16 ب.ظ.

      انشاالله در آینده مطالبی با جزئیات بیشتر خواهم نوشت.

  4. شاهین کیاست
    سپتامبر 3, 2010 در 11:10 ق.ظ.

    سلام جناب رمضانی بسیار از پست های شما لذت می برم.
    اما برای من سوال هست که از کدام ORM استفاده کنم؟
    Entity Framework
    Code Smith With NEttiers
    http://www.llblgen.com/defaultgeneric.aspx
    Nhibernate
    و …

    • سپتامبر 3, 2010 در 2:33 ب.ظ.

      سلام دوست عزیز
      از لطف شما ممنونم
      به نظر من استفاده از EF و NHibernate بهترین گزینه است. هر کدام دارای مزایایی هستند. در حال حاضر من از NHibernate استفاده می‌کنم.

      • شاهین کیاست
        سپتامبر 3, 2010 در 2:41 ب.ظ.

        از پاسخ شما ممنونم.
        من با Codesmith و Template nettiers کار کردم.
        فکر می کنم یک بار امتحان آن ارزش داشته باشه.
        و در خیلی از جاها خواندم که llblgen در میان محصولات تجاری حرف زیادی برا گفتن دارد.
        اما خودم تمایل دارم که کمی هم با EF کار کنم به دلیل علاقه ای که به LINQ دارم.
        در ضمن تصور می کردم توصعی ی NHibernate متوقف شده.
        این محصول متعلق به کدام Company است؟ ایا رایگان هست؟
        با تشکر از وقتی که می گزارید.
        منتظر پست های خوب شما هستم.

      • سپتامبر 3, 2010 در 2:56 ب.ظ.

        دوست عزیزم

        در حال حاضر Nhibernate تقریبا قوی‌ترین و در حال توسعه‌ترین ORM موجود است. NH به صورت open source در حال توسعه است و دارای یک community بزرگ از برنامه نویسان در سراسر جهان می‌باشد. در ضمن اگر به LINQ علاقه دارید کمی درباره پروژه LINQ to NHibernate مطالعا کنید. نسخه ۳ NH در آینده نزدیک منتشر خواهد شد که دارای امکانات بسیار قوی می‌باشد.

        موفق باشید
        رمضانی

  5. سمانه
    دسامبر 31, 2010 در 12:00 ب.ظ.

    عالی بود

  1. اکتبر 8, 2010 در 11:07 ب.ظ.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: