Hibernate ابزاری متناسب با منبع باز نقشه برداری شی(ORM) است که چارچوبی را برای نقشه برداری از مدل های دامنه شی گرا به پایگاه داده های رابطه ای برای برنامه های وب زبان جاوا فراهم میکند. Hibernate از انواع سفارشی تعریف شده توسط کاربر پشتیبانی میکند. معماری Hibernate در چهار لایه طبقه بندی شده است. این معماری سطح بالای Hibernate با فایل نگاشت و فایل پیکربندی است.
Hibernate چیست و چه کاربردی در زبان جاوا دارد؟
برنامه های Hibernate کلاس های پایدار را تعریف میکنند که "به جدولهای پایگاه داده" ترسیم میشوند. معماری Hibernate شامل بسیاری از اشیا مانند اشیا دائمی، کارخانه جلسه، کارخانه تراکنش، کارخانه اتصال، جلسه، معامله و غیره است. معماری Hibernate در چهار لایه طبقه بندی شده است. یک معماری سطح بالا با فایل نگاشت و فایل پیکربندی است.بسیاری از توسعه دهندگان جاوا از "جهنم فراداده" دوری کرده و برخی پیشنهاد کرده اند که به فراداده XML کد جاوا ساده بازگردید. Hibernate دارای پیش فرض های معقولی است که تایپ کردن را به حداقل میرساند و یک تعریف کامل نوع فایل دارد که میتواند برای تکمیل خودکار یا اعتبار سنجی استفاده شود.
روند انتقال داده ها از کلاس ها به پایگاه داده و بالعکس از طریق Hibernate
درک معماری Hibernate در ساختار برنامه های جاوا
معماری Hibernate در چهار لایه طبقه بندی شده است.
لایه برنامه جاوا، لایه چارچوب Hibernate، لایه api بک هند
لایه پایگاه داده رابط های برنامه نویسی اولین چیزی است که باید در مورد Hibernate یاد بگیرید تا بتوانید از آن در لایه ماندگار برنامه خود استفاده کنید. یک هدف اصلی در طراحی API این است که واسط های بین اجزای نرم افزار را تا حد ممکن باریک نگه داریم. با این حال، در عمل، API های ORM کوچک نیستند.
معماری Hibernate
حافظه پنهانی سطح اول :
حافظه پنهانی پیش فرض را نشان میدهد که هنگام تعامل با پایگاه داده توسط شی Hibernate Session استفاده شده است. همچنین جلسه و اشیا را در جلسه فعلی cache میکند. همه درخواست های Session object از پایگاه داده، باید از حافظه نهان سطح اول یا حافظه پنهان جلسه عبور کند. باید توجه داشته باشید که حافظه پنهان سطح اول برنامه های جاوا تا زمان فعال شدن شی Session با شی with جلسه در دسترس است.
حافظه پنهان سطح دوم :
برای ذخیره اشیا در طول جلسه استفاده میشود. باید به صراحت فعال شود و یکی از ارائه دهندگان حافظه پنهان برای حافظه پنهان سطح دوم در ساختار برنامه های جاوا لازم است. یکی از ارائه دهندگان پنهان کش سطح دوم، EhCache است.
اشیا ماندگار:
اشیا قدیمی ساده جاوا هستند (POJO)، که به عنوان یکی از ردیف های جدول مربوطه در پایگاه داده توسط Hibernate ادامه مییابد. آنها را میتوان در پرونده های پیکربندی (hibernate.cfg.xml ) یا (hibernate. Properties) پیکربندی کرد یا حاشیه نویسی توسط حاشیه نویسیEntity.
Hibernate ابزار تولید ORM
رابط های Hibernate در زبان جاوا به صورت زیر طبقه بندی شود:
رابط هایی که توسط برنامه ها برای انجام CRUD اساسی (ایجاد / خواندن / به روزرسانی / حذف) و پرس و جو فراخوانی میشوند، این رابط ها نقطه اصلی وابستگی منطق برنامه / کنترل برنامه به Hibernate است. آنها شامل جلسه، تراکنش و پرس و جو هستند. رابط هایی که با کد زیرساخت برنامه برای پیکربندی Hibernate، از همه مهمتر، کلاس Configuration فراخوانی میشوند.رابط های تماس مجدد که به برنامه اجازه میدهد در برابر وقایع درون Hibernate مانند Interceptor، Lifecycle و Validatable واکنش نشان دهد.
رابط هایی که امکان گسترش نقشه برداری قدرتمند Hibernate را فراهم میکنند، مانند User Type، Composite User Type و Identifier Generator این رابط ها توسط کد زیرساخت برنامه (در صورت لزوم) پیاده سازی میشوند. Hibernate از API های موجود جاوا، از جمله JDBC (اتصال پایگاه داده جاوا)، API تراکنش جاوا (JTA، و نامگذاری جاوا و رابط دایرکتوری JNDI ) استفاده میکند. JDBC یک سطح ابتدایی از انتزاع عملکرد مشترک در پایگاه داده های رابطه ای را فراهم میکند، اجازه میدهد تقریباً هر پایگاه داده ای با یک درایور JDBCتوسط Hibernate پشتیبانی شود. JNDI و JTA به Hibernate اجازه میدهند تا با سرورهای برنامه JEE2 ادغام شود.
رابط های Hibernate
رابط های اصلی
پنج رابط اصلی تقریباً در هر برنامه Hibernate استفاده میشود. با استفاده از این رابط ها میتوانید اشیا ماندگار برنامه های جاوا را ذخیره و بازیابی کنید و تراکنش ها را کنترل کنید.
رابط جلسه:
رابط Session رابط اصلی است که توسط برنامه های Hibernate زبان جاوا استفاده میشود. یک نمونه از Session آسان و ایجاد و از بین بردن آن کم هزینه است.، این گزینه با توجه به هر درخواست اهمیت دارد، زیرا برنامه شما نیاز به ایجاد و از بین بردن جلسات دائمی دارد. جلسات Hibernate ایمنی موضوعی ندارند و باید از طریق طراحی همزمان فقط یک نخ استفاده شود. مفهوم Hibernateیک جلسه چیزی بین اتصال و تبادلات است.
اگر جلسه را به عنوان یک حافظه نهان یا مجموعه ای از اشیا بارگیری شده، مربوط به یک واحد عملی نمایید، کار با آن راحت تر است. Hibernateمی تواند تغییرات اشیا موجود در واحد کاری را تشخیص دهد. ما بعضی مواقع Session را ماندگار مینامیم زیرا رابط کاربری مربوط به پایداری ذخیره و بازیابی اشیا میشود.
توجه داشته باشید که یک جلسه Hibernate هیچ ارتباطی با وب ردیف HttpSession ندارد. وقتی از کلمه session استفاده میکنیم منظورمان جلسه Hibernate است. ما گاهی اوقات از user session برای ارجاع به شی HttpSession استفاده میکنیم. جلسه، تعامل بین برنامه و پایگاه داده در هر لحظه از زمان را نشان میدهد. جلسه توسط کلاس org.hibernate.Session نشان داده میشود. نمونه جلسه را میتوان از لوبیای Session Factory بازیابی کرد.
رابط Session Factory :
این برنامه نمونه های Session را از Session Factory به دست میآورد. در مقایسه با رابط Session، این شی هیجان کمتری دارد. هر کاربر برنامه کاربردی Session Factory را برای یک شی session جلسه درخواست میکند. Session Factory از اطلاعات پیکربندی پرونده ها در برنامه های مبتنی بر زبان جاوا استفاده میکند تا شی session جلسه را به طور مناسب نمونه سازی کند.
Session Factory مطمئناً آسان نیست! این برنامه برای به اشتراک گذاشتن در بسیاری از موضوعات برنامه است. به طور معمول یک Session Factory واحد برای کل برنامه وجود دارد - به عنوان مثال در هنگام راه اندازی برنامه ایجاد شده است. با این حال، اگر برنامه شما با استفاده از Hibernate به چندین پایگاه داده دسترسی پیدا کند، برای هر پایگاه داده به یک Session Factory نیاز دارید.
رابط پیکربندی :
به طور کلی در فایل های hibernate. Properties یا hibernate.cfg.xml نوشته میشود. برای پیکربندی جاوا، میتوانید کلاس حاوی حاشیه باConfiguration را پیدا کنید. ازSession Factory برای کار با Java Application و database استفاده میشود. این امر نمایانگر مجموعه ای از نگاشت های یک برنامه جاوا با یک پایگاه داده SQL است.
شی Configuration برای پیکربندی و راه اندازی Hibernate استفاده میشود. برنامه با استفاده از یک نمونه پیکربندی محل اسناد نقشه برداری و ویژگی های خاص Hibernate را مشخص میکند و سپس Session Factory را ایجاد میکند. حتی اگر رابط پیکربندی قسمت نسبتاً کمی از کل برنامه Hibernate را بازی کند، این اولین شی ای است که با شروع استفاده از Hibernate با آن روبرو خواهید شد.
لایه تعامل Hibernate API با پایگاه داده
رابط تبادل :
رابط Transaction یک API اختیاری است. برنامه های Hibernate زبان جاوا ممکن است ترجیح دهند از این رابط استفاده نکنند، در عوض تراکنش ها را در کد زیرساخت خود مدیریت کنند.
Transaction ،کد برنامه را از اجرای تبادل اساسی انتزاع میکند - که ممکن است یک تراکنش JDBC، تبادل کاربر JTA یا حتی یک تراکنش معماری درخواست مشترک شی (CORBA) باشد - به برنامه اجازه میدهد تا مرزهای تراکنش را از طریق یک API سازگار کنترل کند. به شما کمک میکند تا برنامه های Hibernate بین انواع مختلف محیط های اجرایی قابل حمل باشند. شما را قادر میسازد به ثبات داده برسید، و در صورت وقوع اتفاق غیر منتظره، به عقب بازگردید.
رابط پرس و جو و معیارها :
رابط Query به شما امکان میدهد پرس و جو ها را در برابر پایگاه داده انجام دهید و نحوه اجرای پرس و جو را کنترل کنید. داده ها بصورت HQL یا به گویش SQL بومی پایگاه داده شما نوشته میشوند. یک نمونه Query برای اتصال پارامترهای query، محدود کردن تعداد نتایج برگشت داده شده توسط query و در نهایت برای اجرای query استفاده میشود.
رابط کاربری معیارها به شما امکان میدهد تا پرس و جوهای معیارهای شی گرا را ایجاد و اجرا کنید. به برنامه های مبتنی بر زبان جاوا اجازه میدهد تا پایگاه داده را برای یک یا چند شی ذخیره شده جستجو کنند. Hibernate تکنیک های مختلفی را برای جستجوی پایگاه داده فراهم میکند، از جمله Named Query و Criteria API.
انواع
عنصر اساسی و بسیار قدرتمند معماری Hibernate، Type است. یک نوع از Hibernate Type یک نوع جاوا را به یک نوع ستون پایگاه داده ترسیم میکند (در واقع، این نوع ممکن است چندین ستون را پوشش دهد). تمام خصوصیات ثابت طبقات پایدار، از جمله انجمن ها، دارای یک نوع Hibernate مربوط به خود هستند. این طراحی باعث میشود که Hibernate بسیار انعطاف پذیر و قابل توسعه باشد.
طیف گسترده ای از انواع داخلی وجود دارد، که کل کلاس های جاوا و بسیاری از کلاسهای JDK را شامل میشود، از جمله انواع java.util.Currency، java.util.Calendar، بایت [] و java.io.Serializable.
نتیجه
پایگاه های داده رابطه ای و موتورهای جستجو فناوری های منحصر به فردی نیستند. Hibernate Search قدرت جستجوی متن کامل Lucene را به Hibernate ORM از طریق یک API سطح بالا و جهانی و بدون آسیب رساندن به قابلیت حمل در سطح پایگاه داده برنامه، به ارمغان میآورد. یکپارچه سازی و شفافیت فرایندهای نمایه سازی Lucene را با عملیات پایگاه داده های Hibernate / JPA مدیریت شده بر روی دامنه اشیا پایدار ادغام میکند. هزینه و زمان برنامه نویسی به دلیل نمایه سازی خودکار در Hibernate Search و حاشیه نویسی در Hibernate Search، Hibernate / JPA و چارچوب برنامه جاوا Spring 2.0 بسیار کاهش مییابد.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690