JPA vs Qış rejimi
Demək olar ki, bütün korporativ proqramlar mütəmadi olaraq əlaqəli verilənlər bazasına daxil olmaq üçün tələb olunur. Lakin əvvəlki texnologiyalarla (məsələn, JDBC) qarşılaşılan problem empedans uyğunsuzluğu idi (obyekt yönümlü və əlaqəli texnologiyalar arasındakı fərq). Bu problemin həlli verilənlər bazasına girişi biznes məntiqindən əhatə edən Davamlılıq qatı adlanan mücərrəd təbəqənin tətbiqi ilə təqdim edilmişdir. JPA (Java Persistence API) Java proqramlarında əlaqəli məlumatların idarə edilməsinə (davamlılıq qatından istifadə etməklə) həsr olunmuş çərçivədir. Java developer icmasında istifadə olunan bir çox JPA satıcı tətbiqləri var. Hibernate JPA-nın ən populyar belə tətbiqidir (DataNucleus, EclipseLink və OpenJPA digərləridir). Ən yeni JPA versiyası (JPA 2.0) 2010-cu ilin martında buraxılmış Hibernate 3.5 tərəfindən tam dəstəklənir.
JPA nədir?
JPA Java üçün əlaqəli məlumatların idarə edilməsi üçün çərçivədir. O, JSE (Java Platform, Standard Edition) və ya JEE (Java Platform, Enterprise Edition) istifadə edən proqramlarla istifadə edilə bilər. Onun cari versiyası 10 dekabr 2009-cu ildə buraxılmış JPA 2.0-dır. JPA EJB 2.0 və EJB 1.1 varlıq lobyalarını (Java developer icması tərəfindən ağır çəkili olduğuna görə çox tənqid olunmuşdu) əvəz etdi. Müəssisə lobyaları (EJB-də) davamlılıq obyektləri təqdim etsə də, bir çox tərtibatçılar əvəzinə DAO (Data Access Objects) və digər oxşar çərçivələr tərəfindən təklif olunan nisbətən yüngül obyektlərdən istifadə etməyə alışdılar. Nəticədə JPA təqdim edildi və o, yuxarıda qeyd olunan çərçivələrin bir çox səliqəli xüsusiyyətlərini ələ keçirdi.
JPA-da təsvir olunduğu kimi davamlılıq API-ni əhatə edir (javax-da müəyyən edilmişdir.əzmkarlıq), JPQL (Java Platforması, Enterprise Edition) və əlaqəli obyektlər üçün tələb olunan metadata. Davamlılıq obyektinin vəziyyəti adətən cədvəldə saxlanılır. Müəssisənin nümunələri əlaqəli verilənlər bazası cədvəlinin sətirlərinə uyğundur. Metadata obyektlər arasında əlaqələri ifadə etmək üçün istifadə olunur. Annotasiyalar və ya ayrı-ayrı XML deskriptor faylları (tətbiqlə birlikdə yerləşdirilir) obyekt siniflərində metadata təyin etmək üçün istifadə olunur. SQL sorğularına bənzər JPQL saxlanılan obyektləri sorğulamaq üçün istifadə olunur.
Hibernasiya nədir?
Hibernate Java proqramlaşdırma dili üçün nəzərdə tutulmuş obyekt-əlaqəli xəritə üçün istifadə edilə bilən çərçivədir. Daha dəqiq desək, bu, obyekt-əlaqəli modeli adi relyasiya modelinə uyğunlaşdırmaq üçün istifadə oluna bilən ORM (obyekt-əlaqəli xəritələşdirmə) kitabxanasıdır. Sadə dillə desək, o, əlaqəli verilənlər bazalarında Java sinifləri və cədvəlləri, həmçinin Java-dan SQL məlumat növləri arasında xəritə yaradır. Hibernate həmçinin SQL zəngləri yaratmaqla məlumat sorğusu və əldə etmək üçün istifadə edilə bilər. Buna görə də, proqramçı nəticə dəstlərinin əl ilə idarə olunmasından və obyektlərin çevrilməsindən azad olur. Hibernate GNU lisenziyası altında paylanmış pulsuz və açıq mənbə çərçivəsi kimi buraxılır. JPA API üçün tətbiq Hibernate 3.2 və sonrakı versiyalarda təqdim olunur. Gavin King Hibernate proqramının yaradıcısıdır.
JPA və Hibernate arasındakı fərq nədir?
JPA Java proqramlarında əlaqəli məlumatların idarə edilməsi üçün çərçivədir, Hazırda Hibernate isə JPA-nın xüsusi tətbiqidir (buna görə də ideal olaraq JPA və Hibernate birbaşa müqayisə edilə bilməz). Başqa sözlə, Hibernate JPA tətbiq edən ən məşhur çərçivələrdən biridir. Hibernate, Hibernate Core kitabxanalarının üstündə həyata keçirilən Hibernate Annotasiya və EntityManager kitabxanaları vasitəsilə JPA-nı həyata keçirir. Həm EntityManager, həm də Annotasiyalar Hibernate-in həyat dövrünü izləyir. Ən yeni JPA versiyası (JPA 2.0) Hibernate 3.5 tərəfindən tam dəstəklənir. JPA standartlaşdırılmış interfeysə sahib olmağın üstünlüyünə malikdir, ona görə də tərtibatçı icması onunla Hibernate-dən daha çox tanış olacaq. Digər tərəfdən, yerli Hibernate API-ləri daha güclü hesab etmək olar, çünki onun xüsusiyyətləri JPA-nın üstündür.