Java-sovellukset käyttävät perinteisesti tekniikoita, kuten JDBC (Java Database Connectivity), pääsyyn relaatiotietokantoihin tietojen säilyttämiseksi jatkuvasti. Pääongelma oli ero oliokeskeisen ja relaatioteknologian välillä. JDBC-sovellusliittymä vaatii kehittäjiä käsin koodaamaan alkeellisimmat CRUD-toiminnot (luominen, lukeminen, päivittäminen ja poistaminen) SQL: ssä, joissa ei ollut siirrettävyyttä.
Lisäksi koodi oli täysin SQL-riippuvainen, mikä ei ole relaatiotietokantojen vakioeritelmä, mikä vaikeuttaisi siirtymistä tietokannasta toiseen. Ongelmana on, että relaatioteknologia on keskittynyt dataan ja sen suhteeseen, kun taas oliopainotteinen paradigma painottaa datan lisäksi myös siihen suoritettuja toimintoja. Tämä johtaa objekti-relaatioimpedanssien epäsovitukseen. Yksi laajalti hyväksytty ratkaisu on olosuhteiden kartoitus (ORM).
Hibernate on ORM (Object / Relational Mapping) -kehys Java-ohjelmointikielelle, joka koskee datan pysyvyyttä. Se on yksinkertaisesti avoimen lähdekoodin olosuhteiden kartoitusratkaisu, joka yhdistää Java-luokat relaatiotietokantojen tietokantataulukoihin ja Java-tietokannasta SQL-tietotyyppeihin. Se on kevyt ORM-kehys, jota jaetaan GNU-lisenssillä ja jonka tarkoituksena on tarjota kehittäjille avoin mekanismi pysyvyyden saavuttamiseksi. Se käyttää SQL: n kaltaista tehokasta kyselykieltä, nimeltään HQL (lyhenne hibernate-kyselykielestä), joka integroituu nopeasti sekä olemassa oleviin että uusiin sovelluksiin muuttamatta muuta sovellusta. Lisäksi se on täysin yhteensopiva oliokeskeisten käsitteiden, kuten perintö, polymorfismi ja assosiaatio, kanssa. Ja mikä parasta, se ei vaadi sovellusluokan muuttamista pysyvyyden saavuttamiseksi.
Java Pysyvyyssovellusliittymä (JPA) on määritelmä, joka kuvaa käyttöliittymää olosuhteiden kartoituksiin ja pysyvään objektin hallintaan. API-määritelmän lisäksi se määrittelee joukon sääntöjä ja ohjeita siitä, kuinka toteuttaa olosuhteiden kartoitus ja miten nämä vaatimukset saatetaan kaikkien JPA-palveluntarjoajien mukaisiksi. Hibernate on JPA-ohjeiden edistynein ja eniten käytetty ORM-toteutus. JPA tarjoaa yksinkertaisesti objektin / relaation kartoitusalustan Java-objektien / luokkien ja relaatiotietokannan välisen tiedon hallintaan Java-sovelluksissa. Se on käyttöliittymämääritys, joka on suunniteltu JPA-toteutuksen toimittajille ORM-toteutuksen standardin luomiseksi korkean suorituskyvyn tietojen käyttökerroksen kohdistamiseksi. Hibernate on suosituin JPA-valmistaja.
JPA, lyhenne Java Persistent API -sovelluksesta, on eritelmä tietojen käyttämiseen, hallitsemiseen ja pysyvään säilyttämiseen sovelluksissa, joissa käytetään Java Platform, Standard Edition (Java, SE) ja Java Platform, Enterprise Edition (Java, EE). Hibernate puolestaan on enemmän ORM-toteutuksen työkalu, joka on JPA-eritelmien mukainen.
JPA on Java-olosuhteiden kartoituksen eritelmä, jonka avulla kehittäjät voivat suorittaa tietokantatoiminnot paljon nopeammin ja tehokkaammin, mikä mahdollistaa helpon vuorovaikutuksen tietokantojen kanssa. Se on pysyvyys- ja olosuhteiden kartoituksen vakio-sovellusliittymä, joka tarjoaa kehittäjille useita etuja dataa sitovissa toiminnoissa. Hibernate on avoimen lähdekoodin objektien relaatiotekniikkatyökalu, joka yksinkertaistaa Java-sovellusten kehittämistä, jotta tietokantoihin yhdistäminen on paljon helpompaa kuin koskaan.
JPA: n ongelmana on, että se on vain määritelmä, joka ei tarjoa mitään toteutusluokkia. Sovellusliittymä on vain luokkien ja menetelmien kokoelma tietojen säilyttämiseksi jatkuvasti tietokantaan noudattaen erityisiä sääntöjä ja määräyksiä, joita JPA-toimittajien on noudatettava. Hibernate on yksi monista JPA-toteutustoimittajista, joka toteuttaa JPA-määritykset missä tahansa JPA-tukea tukevassa ympäristössä, mukaan lukien Java SE ja Java EE -sovelluspalvelimet.
Sen lisäksi, että Hibernate-kehys on suosituin JPA-toteutuksen toimittaja, se säilyttää alkuperäisen sovellusliittymänsä edistääkseen yhteensopivuutta taaksepäin ja mukauttaakseen epästandardeja ominaisuuksia. Hibernate sisältää useita ominaisuuksia, joita Java Persistence API ei tue, kuten laajennetut tunnistegeneraattorit, uusi Date and Time API, toistettavat merkinnät, höyrykyselyn tulokset, muokattavat CRUD-lausunnot, muuttumattomat entiteetit, luonnolliset ID-tuki, liittymättömien yksiköiden tilapäinen liittyminen , jne.
EntityManager on JPA-eritelmien toteutuksen standardi, joka on sama kaikissa toteutuksissa. Päinvastoin, jos haluat käyttää Hibernate-sovellusliittymää, käyttäisit Hibernate-erityistä istuntoa pysyvyyden käsittelemiseen. Et kuitenkaan voi siirtyä uuteen toimittajaan, jos valitset istunnon, koska se on rajoitettu Hibernate-sovellusliittymiin.
Lähes kaikki yrityssovellukset tarvitsevat jonkin verran tapaa tallentaa tietoja jatkuvasti. Se on elintärkeää yrityssovelluksille, koska vaaditaan pääsy relaatiotietokantoihin. Pysyvyys on peruskonsepti sovelluskehityksessä, ja se on sinänsä haaste, koska tarve järjestää hierarkkisesti jäsennellyt Java-objektit tietokantaan nopealla ja tehokkaalla tavalla. Vaikka pysyvyys on jo ollut kuuma keskusteluaihe Java-yhteisössä, monet kehittäjät eivät edes ole yhtä mieltä ongelman laajuudesta. Oliokeskeisen kielen yhteydessä pysyvyys tarkoittaa, että tieto on edelleen saatavissa myös sen luoneen prosessin päättymisen jälkeen. Tietoja voidaan säilyttää jatkuvasti monella tapaa. Hibernate on yksi sellainen projekti, jonka tavoitteena on tarjota täydellinen ratkaisu Java-pysyvyysongelmaan, kun taas JPA on eritelmä pysyvän datan ja olosuhteiden kartoitusten hallitsemiseksi..