JPA vs. Hibernate
Lähes kaikkia yrityssovelluksia vaaditaan pääsyyn relaatiotietokantoihin säännöllisesti. Mutta aikaisempien tekniikoiden (kuten JDBC) kohtaama ongelma oli impedanssien epäsuhta (ero olio- ja relaatioteknologioiden välillä). Ratkaisu tähän ongelmaan otettiin käyttöön ottamalla abstrakti kerros nimeltään Pysyvyyskerros, joka kapseloi tietokannan käyttöoikeudet liiketoimintalogiikasta. JPA (Java Persistence API) on kehys, joka on omistettu relaatiotietojen hallintaan (pysyvyyskerrosta käyttämällä) Java-sovelluksissa. Java-kehittäjäyhteisössä käytetään monia JPA-toimittajien toteutuksia. Hibernate on JPA: n suosituin tällainen toteutus (DataNucleus, EclipseLink ja OpenJPA ovat jotkut muut). Uusinta JPA-versiota (JPA 2.0) tukee täysin Hibernate 3.5, joka julkaistiin maaliskuussa 2010.
Mikä on JPA?
JPA on kehys Java-relaatiotietojen hallintaan. Sitä voidaan käyttää sovelluksissa, jotka hyödyntävät JSE: tä (Java Platform, Standard Edition) tai JEE (Java Platform, Enterprise Edition). Sen nykyinen versio on JPA 2.0, joka julkaistiin 10. joulukuuta 2009. JPA korvasi EJB 2.0- ja EJB 1.1 -yksikköpavut (joita Java-kehittäjäyhteisö kritisoi voimakkaasti niiden painoarvon vuoksi). Vaikka kokonaisuus pavut (EJB: ssä) tarjosivat pysyvyysobjekteja, monet kehittäjät olivat tottuneet käyttämään sen sijaan DAO: n (Data Access Objects) ja muiden vastaavien kehysten tarjoamia suhteellisen kevyitä kohteita. Seurauksena oli JPA: n käyttöönotto, ja se tarttui moniin yllä mainittujen kehysten siisteihin ominaisuuksiin.
JPA: n mukainen pysyvyys kattaa sovellusliittymän (määritelty javax.persistence), JPQL: n (Java Platform, Enterprise Edition) ja relaatiobjekteille vaadittavan metatiedon. Pysyvyyskokonaisuuden tila säilyy tyypillisesti taulukossa. Entiteetin tapaukset vastaavat relaatiotietokannan taulukkorivejä. Metatietoja käytetään ilmaisemaan entiteettien välisiä suhteita. Merkintöjä tai erillisiä XML-kuvaajatiedostoja (jotka on asennettu sovelluksen mukana) käytetään metatietojen määrittämiseen kokonaisuusluokissa. JPQL, joka on samanlainen kuin SQL-kyselyt, käytetään tallennettujen entiteettien kyselyihin.
Mikä on Hibernate?
Hibernate on kehys, jota voidaan käyttää Java-ohjelmointikielelle tarkoitettujen olosuhteiden kartoitukseen. Tarkemmin sanottuna se on ORM (objekti-relaatiotietojen kartoitus) -kirjasto, jota voidaan käyttää objekti-relaatiomallin kartoittamiseen tavanomaiseen relaatiomalliin. Yksinkertaisesti sanottuna se luo kartoituksen Java-luokkien ja taulukoiden välillä relaatiotietokannoissa, myös Java-SQL-tietotyyppien välillä. Hibernaattia voidaan käyttää myös tietojen kyselyyn ja hakemiseen luomalla SQL-puheluita. Siksi ohjelmoija vapautetaan tulossarjojen manuaalisesta käsittelystä ja objektien muuntamisesta. Hibernate julkaistaan ilmaisena ja avoimen lähdekoodin puitteina, jota jaellaan GNU-lisenssillä. JPA API -sovelluksen toteutustapa on Hibernate 3.2: ssä ja uudemmissa versioissa. Gavin King on Hibernaten perustaja.
Mitä eroa on JPA: n ja Hibernaten välillä??
JPA on kehys relaatiotietojen hallintaan Java-sovelluksissa, kun taas Hibernate on JPA: n erityinen toteutus (joten ihannetapauksessa JPA: ta ja Hibernaattia ei voida suoraan verrata). Toisin sanoen Hibernate on yksi suosituimmista puitteista, joka toteuttaa JPA: n. Hibernate toteuttaa JPA: n Hibernate Annotation- ja EntityManager-kirjastojen kautta, jotka toteutetaan Hibernate Core -kirjastojen päällä. Sekä EntityManager että Annnotations seuraavat Hibernaten elinkaarta. Hibernate 3.5 tukee täysin uusinta JPA-versiota (JPA 2.0). JPA: n etuna on standardisoidun käyttöliittymän käyttö, joten kehittäjäyhteisö tuntee sen paremmin kuin Hibernate. Toisaalta natiivin Hibernate-sovellusliittymää voidaan pitää tehokkaampana, koska sen ominaisuudet ovat YPA: n yläjoukko.