JPA dhidi ya Hibernate
Takriban maombi yote ya biashara yanahitajika kufikia hifadhidata za uhusiano mara kwa mara. Lakini tatizo lililokabiliwa na teknolojia za awali (kama vile JDBC) lilikuwa kutolingana kwa uzuiaji (tofauti kati ya teknolojia inayolenga kitu na uhusiano). Suluhisho la tatizo hili lilianzishwa kupitia kuanzishwa kwa safu dhahania inayoitwa safu ya Kudumu, ambayo hujumuisha ufikiaji wa hifadhidata kutoka kwa mantiki ya biashara. JPA (Java Persistence API) ni mfumo uliowekwa kwa ajili ya usimamizi wa data ya uhusiano (kwa kutumia safu ya kudumu) katika programu za Java. Kuna utekelezaji mwingi wa wauzaji wa JPA unaotumiwa ndani ya jamii ya wasanidi programu wa Java. Hibernate ndio utekelezaji maarufu zaidi wa JPA (DataNucleus, EclipseLink na OpenJPA ni zingine). Toleo jipya zaidi la JPA (JPA 2.0) linatumika kikamilifu na Hibernate 3.5, ambayo ilitolewa Machi, 2010.
JPA ni nini?
JPA ni mfumo wa kudhibiti data ya uhusiano ya Java. Inaweza kutumika na programu zinazotumia JSE (Jukwaa la Java, Toleo la Kawaida) au JEE (Jukwaa la Java, Toleo la Biashara). Toleo lake la sasa ni JPA 2.0, ambalo lilitolewa tarehe 10 Des, 2009. JPA ilibadilisha EJB 2.0 na EJB 1.1 maharagwe ya huluki (ambayo yalishutumiwa vikali kwa kuwa nzito na jumuiya ya wasanidi wa Java). Ingawa maharagwe ya huluki (katika EJB) yalitoa vipengee vya kudumu, wasanidi wengi walitumiwa kutumia vitu vyepesi vilivyotolewa na DAO (Vitu vya Kufikia Data) na mifumo mingine kama hiyo badala yake. Kwa hivyo, JPA ilianzishwa, na ilinasa vipengele vingi nadhifu vya mifumo iliyotajwa hapo juu.
Kudumu kama ilivyofafanuliwa katika JPA inashughulikia API (imefafanuliwa katika javax.kuendelea), JPQL (Jukwaa la Java, Toleo la Biashara) na metadata inayohitajika kwa vitu vya uhusiano. Hali ya huluki ya kudumu kwa kawaida hudumiwa kwenye jedwali. Matukio ya huluki yanalingana na safumlalo za jedwali la hifadhidata ya uhusiano. Metadata hutumiwa kueleza uhusiano kati ya huluki. Ufafanuzi au faili tofauti za maelezo ya XML (zinazotumiwa pamoja na programu) hutumiwa kubainisha metadata katika madarasa ya huluki. JPQL, ambayo ni sawa na hoja za SQL, hutumiwa kuuliza huluki zilizohifadhiwa.
Hibernate ni nini?
Hibernate ni mfumo ambao unaweza kutumika kwa ramani ya uhusiano wa kitu inayokusudiwa kwa lugha ya programu ya Java. Hasa zaidi, ni maktaba ya ORM (kiolwa-uhusiano wa ramani) ambayo inaweza kutumika kuweka muundo wa uhusiano wa kitu hadi muundo wa kawaida wa uhusiano. Kwa maneno rahisi, huunda ramani kati ya madarasa ya Java na jedwali katika hifadhidata za uhusiano, pia kati ya aina za data za Java hadi SQL. Hibernate pia inaweza kutumika kwa kuuliza na kurejesha data kwa kutoa simu za SQL. Kwa hiyo, programu huondolewa kutoka kwa utunzaji wa mwongozo wa seti za matokeo na kubadilisha vitu. Hibernate inatolewa kama mfumo wa chanzo huria na huria unaosambazwa chini ya leseni ya GNU. Utekelezaji wa API ya JPA hutolewa katika Hibernate 3.2 na matoleo ya baadaye. Gavin King ndiye mwanzilishi wa Hibernate.
Kuna tofauti gani kati ya JPA na Hibernate?
JPA ni mfumo wa kudhibiti data ya uhusiano katika programu za Java, huku Hibernate ni utekelezaji mahususi wa JPA (kwa hivyo, JPA na Hibernate haziwezi kulinganishwa moja kwa moja). Kwa maneno mengine, Hibernate ni moja wapo ya mifumo maarufu inayotekelezea JPA. Hibernate hutekeleza JPA kupitia Hibernate Annotation na maktaba za EntityManager ambazo zinatekelezwa juu ya maktaba za Hibernate Core. EntityManager na Maelezo hufuata mzunguko wa maisha wa Hibernate. Toleo jipya zaidi la JPA (JPA 2.0) linatumika kikamilifu na Hibernate 3.5. JPA ina manufaa ya kuwa na kiolesura ambacho ni sanifu, kwa hivyo jumuiya ya wasanidi programu itaifahamu zaidi kuliko Hibernate. Kwa upande mwingine, API asili za Hibernate zinaweza kuchukuliwa kuwa zenye nguvu zaidi kwa sababu vipengele vyake ni vya juu kuliko vile vya JPA.