PDA

View Full Version : انتخاب ORM مناسب



کامروا
سه شنبه 17 بهمن 1391, 20:07 عصر
سلام:قلب:

چند روزی هست دنبال یک ORM مناسب برای شروع کار هستم.
به چند تا از این ORM ها برخوردم
مثل InstantObject (http://www.instantobjects.org/) که فکر میکنم دیگه منسوخ شده و تا نسخه 2006 توسعه داده شد.
و همچنین Spring4D) Spring for Delphi) (http://www.spring4d.org/) که بنظرم تازه به جمع FrameWork های دلفی اضافه شده.
و یا tiOPF (http://tiopf.sourceforge.net/Doc/overview/index.shtml) و TMS Aurelius (http://www.tmssoftware.com/site/blog.asp?post=208) و ....
که اطلاع چندانی درباره این ها ندارم.
و کلا زیاد اسمی از Hibernate برای دلفی برده نشده و یا من ندیدم! آیا درون دلفی هم میتوان از این ORM استفاده کرد؟

اگر ممکنه یک توضیح کلی در مورد این ORM ها بدهید و کدام را پیشنهاد میدهید؟

سپاس

BORHAN TEC
سه شنبه 17 بهمن 1391, 20:44 عصر
سلام
اگر از دلفی 2010 به بعد استفاده می کنید به نظرم بهترین گزینه Aurelius است چرا که ظاهراً این محصول از نسخ قبلی پشتیبانی نمی کند، این محصول از اکثر دیتابیسها پشتیبانی میکند و به سرعت هم قابلیت های جدید تری به آن اضافه میشود. تنها مسئله مربوط به Aurelius تجاری بودن آن است و از آنجایی که این محصول در این روزها خیلی پرطرفدار شده است بعید به نظر می رسد که در یافتن نسخه های جدید آن با مشکل مواجه شویم. ORM دیگری که وجود دارد DORM است که قابلیت های خوبی دارد ولی از پایگاه داده ها و فریم ورک های پایه کمتری پشتیبانی می کند. در حالت کلی به نظر می رسد که در خصوص دلفی بر روی هیچ ORM ی مثل Aurelius خوب کار نشده است، چه از نظر قابلیت ها و چه از نظر مستندات و چه سرعت پیشرفت و چه از نظر پشتیبانی از پیاگاه داده های مختلف و ... .
موفق باشید...

کامروا
سه شنبه 22 اسفند 1391, 12:48 عصر
TMS Aurelius رو نصب کردم. وقتی دلفی میخواد لود بشه اسم این کامپوننت هم نشون داده میشه و زیرش نوشته Trial Version، یعنی ننوشته که توی چه مدت Expire میشه!
پس منظورش از Trial Version چی هست ؟ اینکه من هروقت بخوام دارم ازش استفاده میکنم! :متفکر:

samani
جمعه 25 اسفند 1391, 13:44 عصر
InstantObject

مثل InstantObject که فکر میکنم دیگه منسوخ شده و تا نسخه 2006 توسعه داده شد.

يكي از ORM خوب و Opensource همينه كه آخرين آپديت آن هم مربوط به يك هفته قبل از اين پاسخي كه دارم ميدم(6/3/2013) و تغييرات مربوط به Delphi XE3 ميباشد

لينك دانلود: http://sourceforge.net/projects/instantobjects/
لينك سايت اصلي و اخبار: http://www.instantobjects.org/
اين ORM از ADO,BDE,IB,DBX پشتيباني ميكنه
از مزاياي اين orm متن بازبودنش ، استفاده آسان، پشتيباني از همه بانك اطلاعاتي، پشتيباني از هر نوع كليد جداول، تعريف آسان كلاسها و مپينگ و ايجاد جداول از روي كلاسها و ...
از معايب اون ميشه به ايجاد چند فيلد class,updatecount,classrefrence كه به غير از updatecount بقيه از نوع رشته ميباشند و در تعداد ركورد بالا در حجم و performance تاثير گذارند
براي اطلاعات بيشتر به سايتش مراجعه كنيد

Delphi ORM يا DORM
ORM متن باز كه حدود 2 سال پيش توسط يه شخص ايتاليايي به نام Daniele Teti شروع شده و در مرحله تكميل با سرعت كم هستش
از مزاياي خوب اين ORM استفاده از توابع و دستورات RTTI و Generic class هاي دلفي جديد كه در سرعت و دقت تاثير گذار هستش ،تعريف مپينك،امكان ايجاد شرايط روي كلاسها و از بانكهاي Firebird,Interbase,SQLITE فعلاً پشتيباني ميكنه
از معايب ميتوان به نداشتن آداپتورهاي ساير بانك اطلاعاتي اشاره كرد كه البته كسي وقتش و توانش رو داشته باشه به راحتي ميتونه آداپتور لازم رو بنويسه
و احتمالاً اين ORM قسمتي از فريم ورك Spring4D خواهد شد

براي اطلاعات بيشتر و دانلود اون ميتونيد از اين لينك زير استفاده كنيد البته اگه تونستيد دانلود كنيد ، اگه نتونستيد بگيد آخرين تغييرات رو براتون آپ كنم
http://code.google.com/p/delphi-orm/
لينك سايت برنامه نويسش:
http://www.danieleteti.it/category/projects/dorm-projects/

از ORM هاي خوب ديگه البته براي بانك هاي اطلاعاتي ORACLE , SQLITE ميشه mormot رو نام برد

به خاطر مشغله از اينكه توضيحات رو مفصل عنوان نكردم معذرت ميخوام .كلاً نوشتن و تايپ كردن مطالب برام خسته كننده است البته به غير از كد زدن
موفق باشيد

SayeyeZohor
دوشنبه 05 فروردین 1392, 02:56 صبح
برگرفته از http://forum.irantrack.com

ORM یا Object Relational Mapping یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Database به مفاهیم Object Oriented در برنامه نویسی است. در واقع می‌توان گفت که ORM کلا‌س ها را به Table ها map می‌کند.

ORM برای این کار ( map کردن ،) یک Framework تهیه می‌کند. و توصیه می کند که کاربردها هنگام پیاده سازی از یک Framework استفاده نمایند. وقتی که شما می‌خواهید به Database دسترسی پیدا کنید، یا اطلاعاتی را ذخیره کنید، این کارها را مستقیما بر‌ روی اشیاء ( Object تان ) انجام می‌دهید. در واقع ORM با کپسوله کردن مراحل دسترسی به Database ، دشواری‌های کار با پایگاه داده را از دید کاربران و برنامه‌نویسان پنهان می‌کند.
http://www.visual-paradigm.com/VPGallery/img/orm/Overview/ORM-Overview.png

معرفی ORM

مزیت بکارگیری ORM مدیریت ساده data در Object Oriented Programming توسط ORM است. و اینکه اگر قرار به عوض شدن پایگاه داده باشد، این تبدیل تنها با عوض کردن یک بخش از Framework که وظیفه برقراری ارتباط با Database را بر عهده دارد ( در برخی از برنامه‌های موجود با تغییر خصوصیت نام پایگاه داده ) صورت می‌پذیرد.

از مشکلاتی که ORM می‌تواند بوجود آورد میتوان به این مورد اشاره کرد که به خاطر فضای زیادی که اشغال می‌کند ، باعث پایین آمدن Performance در سیستم می‌شود. ولی به خاطر مزایایی که دارد (که بخصوص در پروژه‌های بزرگ حس می‌شود) استفاده از آن توصیه می‌شود.

زمان به ما ثابت کرده که پایگاه داده‌های رابطه‌ای ساختار مناسبی برای ذخیره‌سازی داده‌ای هستند، همچنین به این نتیجه رسیده‌ایم که برنامه‌نویسی شیءگرا یک رویکرد بسیار خوب و قوی برای پیاده‌سازی سیستم‌های بسیار پیچیده می‌باشد.

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



ميشه چند تا از بهترين ORM ها رو معرفي كنيد ؟
اگه با آدرس براي دانلود نرم افزارش باشه ممنون ميشم

SayeyeZohor
دوشنبه 05 فروردین 1392, 14:28 عصر
ميشه چند تا از بهترين ORM ها رو معرفي كنيد ؟
اگه با آدرس براي دانلود نرم افزارش باشه ممنون ميشم