خانه / Hibernate / مقدمه ای بر Hibernate

مقدمه ای بر Hibernate

مقدمه

استفاده از پایگاه داده رابطه ای و کار با نرم افزار شیء گرا به صورت همزمان می تواند وقت گیر و تا حدی سخت باشد. از آن جا که الگوی بین روش نمایش و استفاده از داده ها در اشیاء و پایگاه داده های رابطه با یکدیگر تطابق ندارد، لذا هزینه های توسعه به میزان قابل توجهی افزایش خواهد یافت. Hibernate یک ابزار نگاشت شی/رابطه (ORM)[1] برای محیط جاوا است. اصطلاح نگاشت شی/رابطه به روش نگاشت داده بین مدل شی و مدل داده رابطه ای اشاره دارد.

با وجود این که برای کار با Hibernate نیازی به یک پس زمینه قوی در SQL نیست، اما داشتن اطلاعات پایه ای از این مفاهیم می تواند کمک زیادی به درک سریع تر و کامل تر Hibernate کند. درک درست و کامل از اصول مدل سازی داده ها اهمیت ویژه ای دارد.

Hibernate عملیات تبدیل و نگاشت کلاس های جاوا به جداول پایگاه داده، و همچنین انواع داده های جاوا به انواع داده SQL را انجام می دهد. علاوه بر این، این کتابخانه امکان پرس و جو و بازیابی اطلاعات را فراهم کرده است. در صورت استفاده از این کتابخانه زمان توسعه کد می تواند به میزان قابل توجهی کاهش یابد، زیرا دیگر نیازی به تهیه دستی کد SQL و JDBC نیست. هدف طراحی Hibernate این است که توسعه دهندگان را از انجام کارها و تهیه برنامه های مربوط به مانایی داده ها، که معمولا در ۹۵ درصد موارد مشترک هستند، آزاد کند. با این حال، Hibernate بر خلاف بسیاری از ابزارهای مشابه دیگر قدرت SQL را از دید برنامه نویس مخفی نکرده و اطمینان می دهد که تخصص و دانش کاربر در فن آوری های رابطه ای معتبر بوده و قابل استفاده است.

ممکن است Hibernate راه حل خیلی خوبی برای برنامه های کاربردی داده محور که تنها از روال های ذخیره شده[۲] برای پیاده سازی منطق کسب و کار خود در پایگاه داده استفاده می کنند، نباشد. اما این ابزار برای مدل های شی گرا و برنامه های کاربردی با لایه میانی مبتنی بر جاوا مفید است. Hibernate می تواند در حذف و یا مخفی کردن کد خاص SQL به شما کمک کرده و روال تبدیل مجموعه نتایج را از حالت جدولی به مجموعه ای از اشیاء انجام دهد.

مزایای استفاده از چارچوب Hibernate

استفاده از چارچوب Hibernate مزایای زیادی دارد. از جمله می توان به این موارد اشاره کرد:

  • متن باز و سبک بودن: چارچوب Hibernate یک چارچوب متن باز، تحت مجوز LGPL و سبک است.
  • عملکرد سریع: عملکرد چارچوب Hibernate سریع است، زیرا در این چارچوب از حافظه نهان داخلی استفاده می شود. دو نوع حافظه نهان در چارچوب وجود دارد: حافظه نهان سطح یک و حافظه نهان سطح دو. حافظه نهان سطح یک به طور پیش فرض فعال است.
  • جستجوهای مستقل از پایگاه داده: HQL یا زبان پرس و جوی Hibernate[3] یک نسخه شی گرا از SQL است. این زبان، پرس و جوهای مستقل از پایگاه داده را تولید می کند. بنابراین نیاز نیست پرس و جوهای مخصوص پایگاه داده نوشته شود. قبل از Hibernate، اگر پایگاه داده یک پروژه تغییر می کرد، نیاز بود پرس و جوهای SQL نیز تغییر کند که منجر به مشکلاتی در تعمیر و نگهداری برنامه می شد.
  • ایجاد جدول خودکار: چارچوب Hibernate امکانات لازم را برای ایجاد خودکار جداول پایگاه داده فراهم کرده است. بنابراین نیازی به ایجاد جداول در پایگاه داده به صورت دستی وجود ندارد.
  • ساده سازی عملیات join پیچیده: توسط چارچوب Hibernate واکشی داده ها از چند جدول آسان است.
  • ارائه آمار پرس و جو و وضعیت پایگاه داده: Hibernate از حافظه نهان پرس و جو پشتیبانی کرده و آمار لازم را در مورد پرس و جو و وضعیت پایگاه داده ارائه می دهد.

معماری Hibernate

Hibernate از یک معماری لایه بندی شده استفاده کرده تا کاربر را از نیاز به اطلاع داشتن در مورد نحوه کارکرد APIهای زیرین مبرا کند. Hibernate باعث می شود از پایگاه داده و پیکربندی داده ها برای ارائه سرویس به برنامه های کاربردی استفاده شود.

یک شمای کلی از معماری سطح بالای Hibernate در شکل زیر دیده می شود.

hibernate-arch-1

در شکل زیر، معماری کاربرد Hibernate با چند کلاس هسته ای مهم دیده می شود.

hibernate-arch-2

Hibernate از APIهای مختلف موجود جاوا مانند JDBC، Java Transaction API (JTA) و Java Naming and Directory Interface (JNDI) استفاده می کند. JDBC یک سطح انتزاعی ابتدایی از امکانات مشترک بین پایگاه داده های رابطه ای را فراهم کرده و با این کار اجازه می دهد تقریبا تمام پایگاه های داده ای دارای درایور JDBC بتوانند توسط Hibernate پشتیبانی شوند. JNDI و JTA به Hibernate اجازه می دهند که با سرورهای برنامه J2EE یکپارچه شوند.

[۱] Object/Relational Mapping

[۲] Stored Procedure

[۳] Hibernate Query Language

 

 

 

 

درباره ی محسن صابری

Mohsen, is a Linux enthusiast & Network Consultant. A passionate and dynamic person, aims to deliver quality content to IT professionals and loves very much to write and explore new things about Linux, Network, Computers and Internet. Also, he creates and customizes software applications and tools using advanced development and coding techniques. He Manages all phases of application design -- from coding and prototyping through system testing, integration and deployment.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *