JPA vs hibernate
Regulaarsele relatsiooniandmebaasidele juurdepääsuks on vaja peaaegu kõiki ettevõtte rakendusi. Kuid varasemate tehnoloogiate (näiteks JDBC) ees seisnud probleem oli impedantsi ebakõla (erinevus objektorienteeritud ja relatsioonitehnoloogia vahel). Lahendus sellele probleemile viidi läbi abstraktse kihi nimega Püsivuskiht kasutuselevõtuga, mis kapseldab andmebaasidele juurdepääsu äriloogikast. JPA (Java Persistence API) on raamistik, mis on pühendatud relatsiooniandmete (püsivuskihti kasutades) haldamiseks Java-rakendustes. Java arendajate kogukonnas kasutatakse palju JPA müüjapoolseid rakendusi. Hibernate on JPA kõige populaarsem rakendus (DataNucleus, EclipseLink ja OpenJPA on veel mõned). JPA uusimat versiooni (JPA 2.0) toetab täielikult Hibernate 3.5, mis ilmus 2010. aasta märtsis.
Mis on JPA?
JPA on Java relatsiooniandmete haldamise raamistik. Seda saab kasutada rakendustega, mis kasutavad JSE (Java Platform, Standard Edition) või JEE (Java Platform, Enterprise Edition). Selle praegune versioon on JPA 2.0, mis ilmus 10. detsembril 2009. JPA asendas EJB 2.0 ja EJB 1.1 üksuse oad (mida Java arendajate kogukond kritiseeris tugevalt nende raskekaalu tõttu). Ehkki entiteedi oad (EJB-s) andsid püsivusobjekte, olid paljud arendajad harjunud kasutama DAO (Data Access Objects) ja muude sarnaste raamistike pakutavaid suhteliselt kergeid objekte. Selle tulemusel võeti kasutusele ühisassamblee ja see haaras paljusid ülalnimetatud raamistike kenadest omadustest.
JPA-s kirjeldatud püsivus hõlmab API (määratletud javax.persistence), JPQL (Java Platform, Enterprise Edition) ja relatsiooniobjektide jaoks vajalikke metaandmeid. Püsivuse olemi olek püsib tavaliselt tabelis. Üksuse eksemplarid vastavad relatsiooniandmebaasi tabeli ridadele. Metaandmeid kasutatakse olemite vaheliste suhete väljendamiseks. Metaandmete määratlemiseks olemiklassides kasutatakse märkusi või eraldi XML-kirjeldusfaile (rakendusega juurutatud). Salvestatud olemite päringuteks kasutatakse JPQL, mis sarnaneb SQL-i päringutega.
Mis on talveune?
Hibernate on raamistik, mida saab kasutada Java-programmeerimiskeele jaoks ette nähtud objektide-suhete kaardistamiseks. Täpsemalt on see ORM (objekti-relatsioonilise kaardistamise) teek, mida saab kasutada objektide-relatsioonimudelite kaardistamiseks tavapäraste relatsiooniliste mudelitega. Lihtsamalt öeldes loob see kaardistamise Java klasside ja tabelite vahel relatsioonandmebaasides, samuti Java ja SQL andmetüüpide vahel. Hibernaati saab kasutada ka andmete päringuks ja otsimiseks, genereerides SQL-kõnesid. Seetõttu on programmeerija vabastatud tulemuste komplektide käsitsi käsitsemisest ja objektide teisendamisest. Hibernate vabastatakse GNU litsentsi alusel levitatava tasuta ja avatud lähtekoodiga raamistikuna. JPA API rakendus on ette nähtud hibernate 3.2 ja uuemates versioonides. Gavin King on Hibernate asutaja.
Mis vahe on JPA ja Hibernate vahel??
JPA on raamistik relatsioonandmete haldamiseks Java-rakendustes, samal ajal kui Hibernate on JPA konkreetne teostus (nii et ideaaljuhul ei saa JPA ja Hibernate otseselt võrrelda). Teisisõnu on hibernate üks populaarsemaid raamistikke, mis rakendab ühisassambleed. Hibernate rakendab ühisassambleed hibernate Annotation ja EntityManager teekide kaudu, mis on rakendatud hibernate Core raamatukogudele lisaks. Nii EntityManager kui ka märkused järgivad hibernate elutsüklit. Hibernate 3.5 toetab täielikult uusimat JPA versiooni (JPA 2.0). JPA eeliseks on standardiseeritud liidese olemasolu, nii et arendajaskond on sellega rohkem kursis kui talveune. Teisest küljest võib natiivseid hibernate API-sid pidada võimsamateks, kuna selle funktsioonid on JPA omaduste ülikomplekt..