آموزش هایبرنیت در جاوا - درس چهارم - مفهوم ORM
Hibernate بازدید : 561 دوشنبه ۶ دی ۱۳۹۵

اگر بخواهیم بصورت خیلی خلاصه مطرح کنیم، Object Relational Mapping یا به اختصار ORM ها واسطه هایی هستند که بین کلاس های زبان برنامه نویسی و پایگاه داده قرار میگیرند و برای مدیریت پایگاه داده و اطلاعات آن مورد استفاده قرار میگیرند. اما منظور از این واسطه چیست؟





در  پایگاه داده های رابطه ای موجودیت های حوزه کاری  یا business Entity ها بر اساس جدول ها و رابطه بین این جدول ها نمایش داده میشود. مانند جدول کتاب، جدول عضو، امانت و ... در سیستم کتابخانه.

از طرفی، در زبان های شئ گرا، این موجودیت ها بر اساس کلاس ها و شناسه رفتار های این کلاس ها نمایش داده میشوند. مانند کلاس کتاب و کلاس عضو و ... در پروژه سیستم کتابخانه.

ابراز  ORM برای ایجاد یک نگاشت بین کلاس های زبان برنامه نویسی و جدول های پایگاه داده استفاده می شوند. مسلما این نگاشت مزایایی در اختیار ما قرار  میدهد. منظور یک ارتباط متقابل است، یعنی اگر در پایگاه داده جدول هایی داریم، به تناسب آن جدول ها کلاس هایی شامل شناسه و رفتار داشته باشیم.

در حالت عادی یعنی زمانیکه از دستورات SQL خالص استفاده میکنیم، ما بعنوان توسعه دهنده، با جدول ها سر و کار داریم و دیدگاه شئ گرایی خود را نسبت به موجودیت ها از دست می دهیم. اما هنگامی که ORM ها مطرح میشوند، به جای جدول ها با کلاس ها و شناسه رفتار های این کلاس ها سر و کار داریم. مهمترین مزیت اینجا رسیدن به دیدگاه شئ گرایست، که این دیدگاه مزایای زیادی را در اختیار ما قرار میدهد و باعث میشود از قدرت شئ گرایی در ارتباط بین موجودیت ها استفاده کنیم. به مرور هنگامی که با روند کار هایبرنیت آشنا شدید، این قدرت را میتوانید درک کنید.

با مفهوم JDBC یا Java Database Connectivity قطعا آشنا هستید و مجموعه API هایی است که جاوا در اختیار برنامه نویسان قرار داده است تا بتوانند بوسطه آن از کلاس های جاوا به پایگاه داده اتصال برقرار کنند و دستورات SQL را اجرا کنند، (البته اجرای غیر مستقیم!!!)، یعنی با استفاده از این JDBC دستورات به DBMS فرستاده شوند و در آنجا اجرا شوند. ما از ORM ها بعنوان واسطه یاد کردیم و قرار است در پروژه های خود از ORM ها و API های آن استفاده کنیم، به نحوی دیگر با JDBC کار نکنیم. اما اینجا شاید دچار اشتباه شوید و تصور کنید که به کل JDBC را از پروژه کنار بگذاریم و صرفا از ORM ها استفاده کنیم. اما چنین تفکری اشتباه است. زیرا ORM ها فقط یک بستر هستند که ما مستقیما با JDBC کار نکنیم. یعنی ما درخواست های  خود را به ORM ها میدهیم و ORM ها با استفاده از JDBC به DB اتصال برقرار کنند و بعنوان مثال اطلاعات را ذخیره کنند.  پس همچنان پشت صحنه JDBC حضور دارد و تنها راه اتصال به DB می باشد.

ما در زبان جاوا ORM هایی نظیر Hibernate, eclipselink, toplink را داریم، اما صرفا به زبان جاوا ختم نمیشود و در زبان های دیگری همچمون .NET هم ابزار هایی ایجاد شده است مانند:NHibernate  و Entity Framework .

در ادامه با ما همراه باشید.







نوشتن دیدگاه