NHibernate چیست
NHibernate چیست؟
یک 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 با تغییر پایگاه داده نهایی خودبخود تغییر میکنند و ان هایبرنیت آنها را برای ما ایجاد میکند.
منابعی که برای تهیه این مطلب از آنها استفاده شده است
تجارب شخصی
لیستی از نرم افزارهای ORMapper
از آنجا که بیشتر مطالبی که در این وبلاگ خواهم نوشت، در ارتباط با ORM است. لذا لیستی از ORM های مختلف را که ویکی پدیا آورده در اینجا میآورم و در مطالب بعدی در مورد یکی از این ORM ها که قدرت خوبی دارد و OpenSource هست مطالبی خواهم نوشت .
مطلب زیر از اینجا در ویکی پدیا قابل دسترسی می باشد .
C++
- LiteSQL, open source
Java
- Carbonado, open source framework, backed by Berkeley DB or JDBC
- Cayenne, Apache, open source for java
- Ebean, open source ORM Framework
- EclipseLink, Eclipse Persistence Platform
- Enterprise Objects Framework, Mac OS X/Java, part of Apple WebObjects
- Hibernate, open source ORM Framework, widely used
- iBATIS, maintained by ASF, and with .NET port.
- Java Data Objects (JDO)
- JPOX, open source JDO 2 reference implementation
- Kodo, commercial implementation of both the JDO and JPA API.
- OpenJPA, Apache, open source, supports JPA API.
- TopLink by Oracle
- Torque, Torque is an object-relational mapper for java.
- WebObjects commercial (but for free) from Apple, includes EOF as the object-relational mapping layer
.NET
- ADO.NET Entity Framework, Microsoft’s ORM (released with .NET 3.5 SP1)
- Base One Foundation Component Library, free or commercial
- BCSEi ORM Code Generator, commercial
- Business Logic Toolkit for .NET, open source
- Castle ActiveRecord, ActiveRecord for .NET, open source
- DataObjects.Net v4.0, open source, commercial
- DevForce, commercial, N-Tier
- Developer Express, eXpress Persistent Objects (XPO)
- EntitySpaces, commercial
- Euss, open source
- Habanero, Free open source
- iBATIS, Free open source
- LLBLGen, open source drivers, commercial
- LightSpeed, free or commercial
- Neo, open source
- NConstruct, commercial
- NHibernate, open source
- ObjectMapper .NET, GPL and commercial license
- OpenAccess, free or commercial
- TierDeveloper, free ORM and code generation tool
- Persistor.NET, free or commercial
- Quick Objects, free or commercial
- Sooda, open source; BSD license
- Subsonic, open source
PHP
- Doctrine, Open Source ORM for PHP 5.2.3, free software (GNU LGPL)
- Propel, ORM and Query-Toolkit for PHP 5, inspired by Apache Torque, free software (GNU LGPL)
- EZPDO, Open Source ORM for PHP 5.0.4 or newer, free software (BSD)
- DABL, Database class creator and Query builder, inspired by Propel but easier to install, free software
Python
- Django, open source
- SQLAlchemy, open source
- SQLObject, open source
- Storm (software), free software (LGPL 2.1), object-relational mapper for Python developed at Canonical Ltd.
Ruby
- ActiveRecord, part of Ruby on Rails (open source)
- Datamapper
- iBATIS, Free open source
Perl
- DBIx::Class, open source (often used with Catalyst)
- Fey-ORM, open source
- Class::DBI, open source (quick and easy)
ORM چیست

معرفی ORM