Különbség a JPA és a Hibernate között
JPA vs Hibernate
Szinte minden vállalati alkalmazásnak szüksége van a relációs adatbázisok rendszeres elérésére. De a korábbi technológiákkal (például a JDBC-vel) szembesült probléma az impedancia eltérés (az objektum-orientált és a relációs technológiák közötti különbség). A probléma megoldására egy perspektivikus rétegnek nevezett absztrakt réteg bevezetésével került bevezetésre, amely magában foglalja az adatbázis-hozzáférést az üzleti logikából. A JPA (Java Persistence API) egy olyan keret, amely a relációs adatok kezelésére szolgál (a perzisztens réteg használatával) a Java alkalmazásokban. A JPA számos szállítói implementációját használja a Java fejlesztői közösségben. A Hibernálás a JPA legnépszerűbb ilyen megvalósítása (a DataNucleus, az EclipseLink és az OpenJPA egy mások). A legfrissebb JPA-verziót (JPA 2. 0) teljes mértékben támogatja a Hibernate 3. 5, amely 2010 márciusában jelent meg.
Mi az a JPA?
A JPA keret a relációs adatok Java kezeléséhez. Használható a JSE (Java Platform, Standard Edition) vagy a JEE (Java Platform, Enterprise Edition) felhasználásával. Jelenlegi verziója a JPA 2. 0, amely 2009. december 10-én jelent meg. A JPA helyébe az EJB 2. 0 és EJB 1. 1 entitást választották (melyeket erősen kritizálták a Java fejlesztői közösség súlyos nehézségeiért). Bár az entitás bab (EJB-ben) perspektivikus objektumokat adott, sok fejlesztő használta a DAO (Data Access Objects) és más hasonló keretek által kínált viszonylag könnyű objektumokat. Ennek eredményeként a Közös Parlamenti Közgyűlés be lett vezetve, és a fent említett keretek szépségének számos jellemzőjét rögzítette.
A JPA-ban leírt perzisztencia az API-t (javax, persistencia), a JPQL (Java Platform, Enterprise Edition) és a relációs objektumokhoz szükséges metaadatokat tartalmazza. A perzisztens egység állapotát jellemzően egy táblázathoz tartják. Egy entitás példányai megfelelnek a relációs adatbázis táblázatainak soraiban. A metaadatok az entitások közötti kapcsolatok kifejezésére szolgálnak. Megjegyzések vagy különálló XML-leíró fájlok (az alkalmazással telepítve) metaadatok meghatározására használhatók entitások osztályaiban. Az SQL lekérdezésekhez hasonló JPQL-t a tárolt entitások lekérdezésére használják.
Mi a Hibernate?
A hibernálás olyan keret, amelyet a Java programozási nyelvhez rendelt objektum-relációs leképezéshez használhatunk. Pontosabban, ez egy ORM (object-relational mapping) könyvtár, amely felhasználható az objektum-relációs modellnek a hagyományos relációs modellbe történő leképezéséhez. Egyszerűen fogalmazva létrehoz egy leképezést Java osztályok és táblák között a relációs adatbázisokban, még a Java-SQL-adattípusok között is. A hibernálás az SQL-hívások generálásával is használható az adatok lekérdezéséhez és visszakereséséhez.Ezért a programozó megkönnyíti az eredményhalmazok kézi kezelését és objektumok konvertálását. A Hibernate szabadon és nyílt forráskódú keretként kerül kiadásra a GNU licenc alatt. A JPA API végrehajtása a Hibernate 3. 2 vagy újabb verziókban található meg. Gavin King a Hibernate alapítója.
Mi a különbség a JPA és a Hibernate között?
A JPA egy keretrendszer a relációs adatok Java alkalmazásokban történő kezeléséhez, míg a Hibernate a JPA konkrét megvalósítása (így ideális esetben a JPA és a Hibernate nem hasonlítható össze közvetlenül). Más szóval, a Hibernate az egyik legnépszerűbb keret, amely a JPA-t valósítja meg. A Hibernate implementálja a JPA-t Hibernate Annotation és EntityManager könyvtárak segítségével, amelyek a Hibernate Core könyvtárak tetején kerülnek végrehajtásra. Mind az EntityManager, mind a Annotations követi a Hibernate életciklusát. A legfrissebb JPA-verziót (JPA 2. 0) teljes mértékben támogatja a Hibernate 3. 5. A JPA előnye egy szabványosított felület, így a fejlesztői közösség jobban ismeri, mint a Hibernate. Másrészt a natív Hibernátus API-k hatékonyabbnak tekinthetők, mivel a JPA szolgáltatásainak felülmúlja a funkcióit.