آموزش hibernate در جاوا

Hibernate چیست؟
hibernate ابزاری است که دارای یک لایه انتزاعی است و وظیفهی ذخیره سازی و بازیابی اشیای جاوا در پایگاه داده را دارد. در این مقاله به آموزش hibernate در جاوا میپردازیم و سعی میکنیم جزئیات آن را پوشش دهیم.
زبان برنامه نویسی جاوا یک زبان شیگرا است که از بسیاری جهات مزیتهای زیادی دارد ولی همچنین هنگام کار با این زبان محدودیتهایی هم وجود دارد. مدیریت دادهها در زبانهای شیگرا به شکل متفاوتی انجام میشود و از آن جایی که پایگاههای دادهی رابطهای، اطلاعات را به شکل جدول ثبت میکنند، عدم تطابقی که رخ میدهد میتواند مشکل ساز باشد. به این مشکل عدم مطابقت امپدانس شی / رابطهای گفته میشود.
برای حل این مشکل میتوان از hibernate در جاوا استفاده کرد. به عبارت دیگر این فریم ورک زبان برنامه نویسی جاوا و سیستمهای مدیریت پایگاه داده رابطهای را بهتر با هم مرتبط میکند.
Hibernate منطق پایداری را توسعه میدهد که باعث میشود پردازش و ذخیرهی دادهها برای استفادهی طولانیتر انجام شود.
Hibernate نوعی ابزار ORM (مخفف Object Relational Mapping) است. ابزار ORM تکنیکی است که شی ذخیره شده در پایگاه داده را نقشه برداری میکند. در واقع با استفاده از این ابزار، ایجاد دادهها، ویرایش آنها و به طور کلی دسترسی به آنها سادهتر انجام میشود.
مزیت دیگر hibernate، جداسازی برنامه نویسی از نوع پایگاه داده است. به عبارت دیگر کاربر میتواند بدون در نظر گرفتن اینکه از چه پایگاه دادهای استفاده میکند کدنویسی کند و مطمئن باشد که hibernate میتواند از پس آن بربیاید.
همچنین کدهای نوشته شده توسط برنامه نویس نیز در این حالت کمتر است.
معماری Hibernate در جاوا:
Hibernate با داشتن معماری لایهای به کاربر کمک میکند تا بتواند بدون نیاز به دانستن APIهای بنیادی کار کند. Hibernate از پایگاه داده و داده های پیکربندی برای ارائه خدمات و اشیای پایدار (Persistence) به برنامه استفاده میکند. (منظور از پایداری یا Persistence در اینجا یعنی دادههای تولید شده و دادههایی که در برنامه استفاده میشوند باید مدت زمان بیشتری نسبت به پردازش تولیدشان عمر کنند. همین نکته باعث حل مشکل عدم تطابق بین زبان برنامه نویسی جاوا و سیستمهای مدیریت پایگاه داده رابطهای میشود.)
معماری Hibernate در جاوا سه بخش دارد:
1- مدیریت اتصال: این سرویس قابلیت اتصال پایگاههای داده و مدیریت آنها را ایجاد میکند. از آن جایی که این اتصال نیاز به منابع زیادی دارد
پرهزینهترین بخش معماری هایبرنیت است.
2- مدیریت تراکنش: با کمک این سرویس امکانی فراهم میشود که کاربر بتواند همزمان چندین دستور را در پایگاه داده اجرا کند.
3- نقشه برداری رابطهای اشیا: این تکنیک برای نشان دادن دادهها از فرم شی به فرم رابطهای به کار میرود. در این حالت هایبرنیت شی را از طریق متد Session.save دریافت میکند و پس از بررسی وضعیت شی، درخواست مربوطه را انجام میدهد.
در نوعی از معماری که معماری Lite نام دارد، بخش سوم معماری یعنی نقشه برداری یا نگاشت رابطهای اشیا اهمیت بیشتری دارد و فقط از آن استفاده میشود ( مدیریت اتصال و مدیریت تراکنش کارایی بالایی ندارند).
البته معماری دیگری به نام Full Cream وجود دارد که از هر سه بخش معماری هایبرنیت یعنی مدیریت اتصال ، مدیریت تراکنش و نگاشت رابطهای اشیا استفاده میکند.
چهار لایه اصلی در معماری Hibernate
- java application layer
- hibernate framework layer
- backhand api layer
- database layer
مزایای استفاده از هایبرنیت:
Hibernate در جاوا مزایای زیادی دارد که از آن جمله می توان به موارد زیر اشاره کرد :
- اپن سورس و کم حجم بودن Hibernate: سبک بودن و منبع باز بودن این ابزار، آن را در دسترس و کارآمد می کند.
- عملکرد سریع (fast performance): اجرای Hibernate به دلیل قابلیت کش درونی آن، بسیار سریع است .
- دو مدل کش در Hibernate وجود دارد: کش مرحله اول (first level Cache) و کش مرحله دوم (second level Cache). کش مرحله اول به صورت پیش فرض فعال است. استفاده از حافظه کش به عملکرد سریع کمک میکند.
- استقلال پایگاه داده (Database Independent query): با کمک این ویژگی میتوانید مستقل از نوع پایگاه داده با آن کار کنید و نیازی نیست که بر اساس نوع پایگاه داده کدنویسیهای متفاوت انجام دهید. قبل از هایبرنیت این محدودیت وجود داشت و با تغییر پایگاه داده، کاربر مجبور بود کدها را بازنویسی کند.
- ایجاد خودکار جدول در پایگاه داده: با کمک این قابلیت دیگر نیازی به ایجاد دستی جداول نیست و به صورت اتوماتیک جداول ایجاد میشوند.
- استفاده از Join: این ویژگی دریافت و بازیابی اطلاعات جدولها را سادهتر میکند.
رابطها در معماری Hibernate:
- presistent object
- session factory: این منبع تولید session اطلاعات و دادههای مورد نیاز خود را ازconnection proviver میگیرد.
- transaction factory :transaction factory به عنوان تولید کننده تراکنش در سطح برنامه شناخته میشود که البته استفاده از آن اختیاری است.
- connection factory: تولید کننده رابط پایگاه داده جاوا ( JDBC connection ) است و برنامه را از منبع داده ومدیریت درایو جدا میکند. استفاده از این رابط نیز اختیاری است.
- session :session object رابط کاربری بین نرم افزار و دادههای پایگاه ایجاد میکند. از این قابلیت برای وارد کردن، به روزرسانی و حذف اشیا در برنامه استفاده میشود. session object از ویژگی کش مرحله اول برای دادهها استفاده میکند.
- Transaction :transaction مجموعه واحدی از عملیاتها در سیستم است که دو حالت دارد : یا اجرای همه این عملیاتها به صورت کامل انجام میشود یا هیچ کدام اجرا نمیشوند. رابط کاربری org.transaction.hibernate بستر مناسبی برای متدهای مدیریت تراکنشها ایجاد میکند. استفاده از این رابط نیز اختیاری است.