JPA vs Hibernate
Szinte az összes vállalati alkalmazásnak szüksége van a relációs adatbázisok rendszeres eléréséhez. A korábbi technológiákkal (például a JDBC) szembesülõ probléma azonban az impedancia eltérése volt (különbség az objektumorientált és a relációs technológiák között). Erre a problémára megoldást vezettek be egy perzisztencia réteg nevű elvont réteg bevezetése révén, amely az adatbázis-hozzáférést az üzleti logikából körülöleli. A JPA (Java Persistence API) egy olyan keret, amely a relációs adatok (a perzisztencia réteg felhasználásával) kezelésére szolgál a Java alkalmazásokban. A Java fejlesztői közösségben sok JPA gyártó-megvalósítás található. A Hibernált a JPA legnépszerűbb ilyen megvalósítása (DataNucleus, EclipseLink és OpenJPA vannak mások). A JPA legújabb verzióját (JPA 2.0) teljes mértékben támogatja a Hibernate 3.5, amely 2010. márciusában jelent meg.
Mi a JPA??
A JPA a Java relációs adatainak kezelésére szolgáló keret. Használható JSE (Java Platform, Standard Edition) vagy JEE (Java Platform, Enterprise Edition) alkalmazásokkal. Jelenlegi verziója a JPA 2.0, amelyet 2009. december 10-én adtak ki. A JPA az EJB 2.0 és az EJB 1.1 entitásbabot váltotta fel (ezeket a Java fejlesztői közösség súlyosan kritizálta azért, mert azok súlyosak). Bár az entitásbabok (az EJB-ben) perzisztencia-objektumokat szolgáltattak, sok fejlesztõ hozzászokott a DAO (Data Access Objects) és más hasonló keretek által kínált viszonylag könnyû objektumok használatához. Ennek eredményeként bevezették a JPA-t, amely megragadta a fent említett keretek sok szép funkcióját.
A JPA-ban leírt perzisztencia lefedi az API-t (a javax.persisztencia meghatározása alatt), a JPQL-t (Java Platform, Enterprise Edition) és a relációs objektumokhoz szükséges metaadatokat. A perzisztencia entitás állapota jellemzően egy táblában fennmarad. Az entitás példányai megfelelnek a relációs adatbázis táblázata sorának. A metaadatok az entitások közötti kapcsolatok kifejezésére szolgálnak. A metaadatok entitásosztályokban történő meghatározásához kommentárokat vagy különálló (az alkalmazáshoz telepített) XML-leíró fájlokat használnak. Az SQL lekérdezésekhez hasonló JPQL-t használják a tárolt entitások lekérdezésére.
Mi a hibernált??
A Hibernálás olyan keret, amelyet felhasználhatunk a Java programozási nyelv objektum-relációs leképezéséhez. Pontosabban, ez egy ORM (objektum-relációs leképezés) könyvtár, amely felhasználható az objektum-relációs modellnek a hagyományos relációs modellhez való hozzárendelésére. Egyszerűen fogalmazva létrehozza a Java osztályok és a táblák közötti relációs adatbázisokat, valamint a Java és az SQL adattípusokat. A hibernált SQL hívások generálásával adatkeresésre és visszakeresésre is használható. Ezért a programozó mentesül az eredménykészletek kézi kezeléséről és az objektumok konvertálásáról. A Hibernate ingyenes és nyílt forráskódú keretként kerül kiadásra a GNU licenc alapján. A JPA API megvalósítását a Hibernate 3.2 és újabb verziói biztosítják. Gavin King a Hibernátum alapítója.
Mi a különbség a JPA és a Hibernált között??
A JPA a relációs adatok Java-alkalmazások kezelésére szolgáló kerete, míg a Hibernate a JPA speciális megvalósítása (tehát ideális esetben a JPA és a Hibernate nem hasonlítható közvetlenül össze). Más szavakkal, a Hibernátum az egyik legnépszerűbb keret, amely végrehajtja a JPA-t. A Hibernátum a JPA hibernátum-kommentár és EntityManager könyvtárakon keresztül valósul meg, amelyeket a Hibernált Core könyvtárak tetején valósítanak meg. Mind az EntityManager, mind a kommentárok a Hibernátum életciklusát követik. A JPA legújabb verzióját (JPA 2.0) a Hibernate 3.5 teljes mértékben támogatja. A JPA előnye, hogy rendelkezik egy szabványosított felülettel, így a fejlesztői közösség jobban ismeri azt, mint a hibernált. Másrészt a natív hibernált API-k erőteljesebbnek tekinthetők, mivel jellemzői a JPA szuperkészletét képezik..