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 بسیار کاهش مییابد.
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
سایت جاواپرو با هدف تولید محتوای آموزشی با کیفیت رایگان در زمینه برنامه نویسی جاوا و اندروید فعالیت خود را در سال 1395 شروع کرد.امیدواریم بتوانیم دامنه گسترده تری از موضوعات پر نیاز در زمینه برنامه نویسی جاوا و اندروید را البته با حمایت شما پوشش دهیم.
تلفن تماس: 09301904690