JPA va Kutish rejimi
Deyarli barcha korporativ ilovalar relyatsion ma'lumotlar bazalariga muntazam ravishda kirish uchun talab qilinadi. Ammo oldingi texnologiyalarda (masalan, JDBC) duch kelgan muammo impedansning mos kelmasligi (ob'ektga yo'n altirilgan va aloqador texnologiyalar o'rtasidagi farq) edi. Ushbu muammoning yechimi ma'lumotlar bazasiga biznes mantig'idan kirishni qamrab oluvchi "Doimiylik qatlami" deb nomlangan mavhum qatlamni joriy etish orqali kiritildi. JPA (Java Persistence API) - bu Java ilovalarida relyatsion ma'lumotlarni (doimiylik qatlamidan foydalangan holda) boshqarish uchun mo'ljallangan ramka. Java dasturchilar hamjamiyatida ishlatiladigan JPA ning ko'plab sotuvchi ilovalari mavjud. Hibernate - bu JPA ning eng mashhur ilovasi (DataNucleus, EclipseLink va OpenJPA boshqalar). Eng yangi JPA versiyasi (JPA 2.0) 2010-yil mart oyida chiqarilgan Hibernate 3.5 tomonidan toʻliq quvvatlanadi.
JPA nima?
JPA Java uchun relyatsion ma'lumotlarni boshqarish uchun asosdir. U JSE (Java Platform, Standard Edition) yoki JEE (Java Platform, Enterprise Edition) dan foydalanadigan ilovalar bilan ishlatilishi mumkin. Uning joriy versiyasi JPA 2.0 boʻlib, 2009-yil 10-dekabrda chiqarilgan. JPA EJB 2.0 va EJB 1.1 loviya oʻrnini egalladi (ular Java dasturchilari hamjamiyatida ogʻirligi uchun qattiq tanqid qilingan). Ob'ekt fasollari (EJBda) qat'iylik ob'ektlarini taqdim etgan bo'lsa-da, ko'plab ishlab chiquvchilar o'rniga DAO (Data Access Objects) va boshqa shunga o'xshash ramkalar tomonidan taqdim etilgan nisbatan engil ob'ektlardan foydalanishga odatlangan. Natijada, JPA joriy etildi va u yuqorida aytib o'tilgan ramkalarning ko'plab nozik xususiyatlarini qamrab oldi.
JPAda ta'riflanganidek, qat'iylik APIni qamrab oladi (javax.da belgilangan.qat'iylik), JPQL (Java Platformasi, Enterprise Edition) va relyatsion ob'ektlar uchun zarur bo'lgan metama'lumotlar. Doimiy ob'ekt holati odatda jadvalda saqlanadi. Ob'ektning misollari relyatsion ma'lumotlar bazasi jadvalining satrlariga mos keladi. Metadata ob'ektlar o'rtasidagi munosabatlarni ifodalash uchun ishlatiladi. Izohlar yoki alohida XML deskriptor fayllari (ilova bilan birga joylashtirilgan) ob'ektlar sinflarida metama'lumotlarni belgilash uchun ishlatiladi. SQL so'rovlariga o'xshash JPQL saqlangan ob'ektlarni so'rash uchun ishlatiladi.
Hibernatsiya nima?
Hibernate - Java dasturlash tili uchun moʻljallangan obʼyektlar bilan bogʻliq xaritalash uchun ishlatilishi mumkin boʻlgan ramka. Aniqrog‘i, bu ORM (obyekt bilan bog‘liq bo‘lgan xaritalash) kutubxonasi bo‘lib, u ob’ektga aloqador modelni an’anaviy relyatsion modelga solishtirish uchun ishlatilishi mumkin. Oddiy qilib aytganda, u Java sinflari va relyatsion ma'lumotlar bazalaridagi jadvallar o'rtasida, shuningdek, Java va SQL ma'lumotlar turlari o'rtasida xarita yaratadi. Hibernate shuningdek, SQL qo'ng'iroqlarini yaratish orqali ma'lumotlarni so'rash va olish uchun ishlatilishi mumkin. Shunday qilib, dasturchi natijalar to'plamini qo'lda boshqarish va ob'ektlarni o'zgartirishdan ozod qilinadi. Hibernate GNU litsenziyasi ostida tarqatiladigan bepul va ochiq manbali ramka sifatida chiqariladi. JPA API ilovasi Hibernate 3.2 va keyingi versiyalarida taqdim etilgan. Gavin King Hibernate asoschisi.
JPA va Hibernate oʻrtasidagi farq nima?
JPA Java ilovalarida relyatsion ma'lumotlarni boshqarish uchun asos bo'lib, Hibernate esa JPA ning o'ziga xos ilovasidir (shuning uchun ideal holda JPA va Hibernateni to'g'ridan-to'g'ri taqqoslab bo'lmaydi). Boshqacha qilib aytganda, Hibernate JPA-ni amalga oshiradigan eng mashhur ramkalardan biridir. Hibernate JPA ni Hibernate Annotation va EntityManager kutubxonalari orqali amalga oshiradi, ular Hibernate Core kutubxonalari ustida amalga oshiriladi. EntityManager ham, izohlar ham Kutish rejimining hayotiy tsiklini kuzatib boradi. Eng yangi JPA versiyasi (JPA 2.0) Hibernate 3.5 tomonidan to'liq quvvatlanadi. JPA standartlashtirilgan interfeysga ega bo'lishning afzalliklariga ega, shuning uchun ishlab chiquvchilar hamjamiyati u bilan Hibernate'dan ko'ra ko'proq tanish bo'ladi. Boshqa tomondan, mahalliy Hibernate API'larini yanada kuchliroq deb hisoblash mumkin, chunki uning xususiyatlari JPA funksiyasining yuqori to'plamidir.