NHibernate چیست ؟

دوشنبه 10 تیر 1392

NHibernate چیست ؟ <br/> یک ORM است که تحت پلت فرم دات نت مایکروسافت کار می‌کند ، و یک FrameWork را برای کار راحت‌تر و با پیچیدگی کمتر با database پیشنهاد می‌کند. در این مدل فیلدهای Database به آبجکت‌های معادلی، برای استفاده در محیط دات نت تبدیل (map) می‌شوند . و با این کار برنامه‌نویسان از پیچیدگی‌های ارتباطی DataBase ای خلاص می‌شوند.

یک ORM است که تحت پلت فرم دات نت مایکروسافت کار می‌کند ، و یک FrameWork را برای کار راحت‌تر و با پیچیدگی کمتر با database پیشنهاد می‌کند. در این مدل فیلدهای Database به آبجکت‌های معادلی، برای استفاده در محیط دات نت تبدیل (map) می‌شوند . و با این کار برنامه‌نویسان از پیچیدگی‌های ارتباطی DataBase ای خلاص می‌شوند.

NH (NHibernate) یک نرم‌افزار کدباز ( OpenSource ) رایگان است. و قسمتی از java ORMapper Hibernate است که کدی در قالب  XML  از موجودیت‌ها (Entity) و روابط (Relation) ارائه می‌کند. و به صورت اتوماتیک برای ذخیره و بازیابی Data ها کد Sql تولید می‌کند، و شما می‌توانید با متادیتاهای (meta data) ذخیره شده در source code کار کنید.

نسخه های NHibernate

   1.      NHibernate نسخه 1.2.1 در نوامبر سال 2007 ( مهر ماه ۱۳۸۶ ) به بازار آمد و با .NET 2.0  کار می‌کرد.

   2.      NHibernate نسخه 2.0 در آگوست سال 2008 ( مرداد ماه ۱۳۸۷ ) عرضه شد.

   3.      NHibernate نسخه 2.0.1 در سپتامبر سال 2008 ( شهریور ماه ۱۳۸۷ ) عرضه شد. و با دات نت 1.1 و  2.0 کار می‌کرد

   4.      NHibernate نسخه 2.1 در اواسط سال 2009 ، عرضه خواهد شد.

   5.      NHibernate نسخه 3.0 اولین نسخه ای خواهد بود که از .net 3.5 استفاده خواهد کرد .

توجه داشته باشید که در نسخه های بالا در مورد کارکرد برنامه با .net framework های مختلف ، متن بر اساس نوشته های سایت رسمی  nhibernate و ویکی پدیا آورده شده .  تجربه شخصی نشان می دهد که نسخه‌های پایین تر با framework 3.5 مشکلی ندارند و بخوبی با آن کار می کنند . ( احتمالا منظور از سازگار بودن با فریم ورک های مختلف، استفاده از حداکثر قابلیت های آن فریم ورک است )

توانایی اصلی «ان هایبرنیت» در map کردن table های DataBase به کلاس‌های .NET است.

ان.هایبرنیت همچنین DataQuery و امکان بازیابی (retrieval) را فراهم می‌کند ، کدهای SQL تولید می‌کند و طراح را  از هندل کردن دستی DataBase نسبت به تبدیلات آن و نگهداری Application های Sql ، راحت می‌کند.

NH ، ماندگاری مناسبی را برای طرح قدیمی CLR (Compiler Language Runtime) فراهم می‌کند. و آبجکت‌های کلاس شما مجبور نیستند مدل برنامه نویسی محدود کننده‌ای را دنبال کنند.

مزیت مهم استفاده از NHibernate این است که می‌توان برای بانک اطلاعاتی به صورت Object Oriented (OO ) کد نوشت. یعنی عملا DtaBase یک Object است که از آن در قالب Data ی map شده استفاده می‌کنیم.

در صورت استفاده کردن از DataSet به جای NH برنامه سرعت بیشتری دارد؛ اما برای نوشتن کد باید کد Sql بنویسیم، پس درگیر پیچیدگی‌های کار با Sql در محیط .NET خواهیم شد. درضمن اگر قرار به عوض کردن نوع DataBase باشد ، اگر framework ای هم از قبل برای راحتی کار درست کرده باشیم، به صورت کامل باید تغییر کند و دوباره نوشته شود. اما در صورت استفاده از NHibernate در صورت تمایل به تغییر DataBase فقط و فقط در تعریف نام DataBase باید تجدید نظر کرد و تمام تغییرات وابسته به database با تغییر پایگاه داده نهایی خودبخود تغییر می‌کنند و ان هایبرنیت آنها را برای ما ایجاد می‌کند.

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

1.     Natural programming model : بدین معنا که NHibernate ، OO را پشتیبانی می‌کند . یعنی ارث‌بری (Inheritance) ، چند‌ریختی (Polymorphism) ، ترکیب (Composition) ، Collection در .NET که شامل Generic collection ها هم می‌شود .

2.     Native .net ‏: API های NHibernate بر مبنای زبان‌های .NET و استانداردهای آن ایجاد شده است .

3.     Support for fine-grained object models : پشتیبانی از مدل‌های آبجکتی، از طریق مدل‌های مختلف غنی شده از مپینگ‌ها، برای Collection ها و Object  های وابسته .

4.     No build time byte code enhancement : در روند بیلد شدن، پردازش بر اساس بایت‌کدها و ایحاد کدهای اضافی وحود ندارد . در حقیقت در زمان بیلد شدن هیچ بهبودی در بایت‌کدها داده نمی‌شود .

5.     The query options : از بدست آوردن آبجکت‌های دیتابیس گرفته تا بدست آوردن خروجی‌های آنها . به هر دوی این مسائل می‌پردازد .

6.     Custom SQL : تصحیح کامل SQL که NHibernate باید برای آبحکت‌هایش از آنها استفاده کند .

7.     Support for “conversations” : ان.هایبرنیت از ماندگاری بالای مفاهیم ، سوا و سر‌هم‌بندی آبحکت‌ها پشتیبانی می‌کند و همچنین از optimistic locking به صورت خودکار مراقبت می‌کند .

8.     Free/open source : ان هاببرنیت، تحت مجوز LGPL (Lesser GNU Public License) است و سورس پروژه ان.هایبرنیت را از سایت SourceForge از اینجا می توانید دانلود کنید .

نصب و راه اندازی NHibernate:
برای استفاده از NHibernate مراحل مخنلفی را باید سپری کرد که در زیر به آنها اشاره می‌شود. توجه داشته باشید که برای استفاده از ان.هایبرنیت باید کارهای دیگری انجام داد که در آینده به آنها خواهیم پرداخت، در این مطلب قصد داریم نحوه نصب و پیکربندی NHibernate را در یک سیستم تشریح کنیم .

گام اول . دانلود و نصب ان.هایبرنیت .

در ابتدا NHibernate را از اینجا در سورس فورگ دانلود کزده و نصب کنید.

گام دوم . اضافه کردن DLL های ان.هایبرنیت به پروژه.

پروژه‌ای ایجاد کنید و فایل اسمبلی داخل پوشه BIN را که از آدرس بالا دانلود کردید به پروژه اضافه کنید.

گام سوم . تنظیمات مورد نیاز در Web.Config .

در ادامه تنظیمات زیر در فایل web.config برنامه اضافه می‌کنیم.

 

چند نکته که باید در ادامه به آنها توجه داشت.

وقتی برای تشخیص Data Store ، FrameWork تان را پیکربندی کردید، باید فضای مدل (ModelSpace) و همچنین پایگاه داده‌تان را معرفی و مشخص کنید.

نکته دیگری هم وجود دارد و آن map کردن فایل‌ها و توضیح روابط (Relations) بین کلاس‌ها و جداول است.

‫امروزه NHibernate ابزاری را فراهم کرده که می‌تواند DLL هایی را از فایل‌های map شده تولید کند. و اضافه کردن یک شیء جدید به برنامه، درواقع یک NAnt task است که بطور خودکار توسط ‏‏ #C از فایل‌های مپ شده تولید می‌شود.

با انجام تنظیمات بالا باید براحتی از NHibernate در برنامه‌تان استفاده کنید.

 

منابع:

 

http://nhibernate.wordpress.com
http://en.wikipedia.org/wiki/NHibernate
http://www.theserverside.net
https://www.hibernate.org/343.html

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان
  • C#.net
  • 5k بازدید
  • 2 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید