Verskil tussen JPA en Hibernate

Verskil tussen JPA en Hibernate
Verskil tussen JPA en Hibernate

Video: Verskil tussen JPA en Hibernate

Video: Verskil tussen JPA en Hibernate
Video: Complicaties: wat te zeggen en hoe het te zeggen? 2024, Julie
Anonim

JPA vs Hibernate

Byna alle ondernemingstoepassings word vereis om gereeld toegang tot relasionele databasisse te verkry. Maar 'n probleem wat vroeër tegnologieë (soos JDBC) in die gesig gestaar het, was die impedansie-wanverhouding (verskil tussen objekgeoriënteerde en relasionele tegnologieë). 'n Oplossing vir hierdie probleem is bekendgestel deur die bekendstelling van 'n abstrakte laag genaamd Persistence layer, wat databasistoegang vanaf die besigheidslogika omsluit. JPA (Java Persistence API) is 'n raamwerk wat toegewy is vir die bestuur van relasionele data (met behulp van die volhardingslaag) in Java-toepassings. Daar is baie verskaffer-implementasies van JPA wat binne die Java-ontwikkelaargemeenskap gebruik word. Hibernate is die gewildste so 'n implementering van JPA (DataNucleus, EclipseLink en OpenJPA is 'n paar ander). Die nuutste JPA-weergawe (JPA 2.0) word ten volle ondersteun deur Hibernate 3.5, wat in Maart 2010 vrygestel is.

Wat is JPA?

JPA is 'n raamwerk vir die bestuur van relasionele data vir Java. Dit kan gebruik word met toepassings wat JSE (Java Platform, Standard Edition) of JEE (Java Platform, Enterprise Edition) gebruik. Die huidige weergawe daarvan is JPA 2.0, wat op 10 Des, 2009 vrygestel is. JPA het EJB 2.0 en EJB 1.1 entiteitbone vervang (wat swaar gekritiseer is omdat hulle swaargewig is deur die Java-ontwikkelaargemeenskap). Alhoewel entiteitsbone (in EJB) standhoudende voorwerpe verskaf het, was baie ontwikkelaars gewoond daaraan om eerder betreklik liggewig voorwerpe te gebruik wat deur DAO (Data Access Objects) en ander soortgelyke raamwerke aangebied word. Gevolglik is JPA ingestel, en dit het baie van die netjiese kenmerke van die raamwerke wat hierbo genoem is vasgevang.

Volharding soos beskryf in JPA dek die API (gedefinieer in javax.volharding), JPQL (Java Platform, Enterprise Edition) en metadata benodig vir relasionele voorwerpe. Toestand van 'n volhardingsentiteit word tipies in 'n tabel volgehou. Gevalle van 'n entiteit stem ooreen met rye van die tabel van die relasionele databasis. Metadata word gebruik om die verhoudings tussen entiteite uit te druk. Aantekeninge of aparte XML-beskrywerlêers (ontplooi saam met die toepassing) word gebruik om metadata in entiteitsklasse te spesifiseer. JPQL, wat soortgelyk is aan SQL-navrae, word gebruik om gestoorde entiteite navraag te doen.

Wat is Hibernate?

Hibernate is 'n raamwerk wat gebruik kan word vir objek-relasionele kartering wat bedoel is vir Java-programmeertaal. Meer spesifiek, dit is 'n ORM (objek-relasionele kartering) biblioteek wat gebruik kan word om objek-relasionele model in 'n konvensionele relasionele model te karteer. In eenvoudige terme skep dit 'n kartering tussen Java-klasse en -tabelle in relasionele databasisse, ook tussen Java- na SQL-datatipes. Hibernate kan ook gebruik word vir data-navrae en herwinning deur SQL-oproepe te genereer. Daarom word die programmeerder onthef van die handmatige hantering van resultaatstelle en omskakeling van voorwerpe. Hibernate word vrygestel as 'n gratis en oopbronraamwerk wat onder GNU-lisensie versprei word. 'n Implementering vir JPA API word voorsien in Hibernate 3.2 en later weergawes. Gavin King is die stigter van Hibernate.

Wat is die verskil tussen JPA en Hibernate?

JPA is 'n raamwerk vir die bestuur van relasionele data in Java-toepassings, terwyl Hibernate 'n spesifieke implementering van JPA is (dus ideaal gesproke kan JPA en Hibernate nie direk vergelyk word nie). Met ander woorde, Hibernate is een van die gewildste raamwerke wat JPA implementeer. Hibernate implementeer JPA deur Hibernate Annotation- en EntityManager-biblioteke wat bo-op Hibernate Core-biblioteke geïmplementeer word. Beide EntityManager en Annotations volg die lewensiklus van Hibernate. Die nuutste JPA-weergawe (JPA 2.0) word ten volle deur Hibernate 3.5 ondersteun. JPA het die voordeel om 'n koppelvlak te hê wat gestandaardiseer is, so die ontwikkelaargemeenskap sal meer vertroud daarmee wees as Hibernate. Aan die ander kant kan inheemse Hibernate API's as kragtiger beskou word omdat die kenmerke daarvan 'n superset is van dié van JPA.

Aanbeveel: