Pagkakaiba sa pagitan ng JPA at Hibernate

Pagkakaiba sa pagitan ng JPA at Hibernate
Pagkakaiba sa pagitan ng JPA at Hibernate

Video: Pagkakaiba sa pagitan ng JPA at Hibernate

Video: Pagkakaiba sa pagitan ng JPA at Hibernate
Video: MAY MAPUTI SA BAGA MO? ALAMIN DITO KUNG BAKIT 2024, Nobyembre
Anonim

JPA vs Hibernate

Halos lahat ng enterprise application ay kinakailangan na regular na mag-access ng mga relational database. Ngunit ang isang problema na nahaharap sa mga naunang teknolohiya (tulad ng JDBC) ay ang impedance mismatch (pagkakaiba sa pagitan ng object-oriented at relational na teknolohiya). Ang isang solusyon para sa problemang ito ay ipinakilala sa pamamagitan ng pagpapakilala ng isang abstract na layer na tinatawag na Persistence layer, na sumasaklaw sa access sa database mula sa business logic. Ang JPA (Java Persistence API) ay isang framework na nakatuon para sa pamamahala ng relational data (gamit ang persistence layer) sa mga Java application. Maraming mga pagpapatupad ng vendor ng JPA na ginagamit sa loob ng komunidad ng developer ng Java. Ang hibernate ay ang pinakasikat na tulad ng pagpapatupad ng JPA (DataNucleus, EclipseLink at OpenJPA ang ilan pa). Ang pinakabagong bersyon ng JPA (JPA 2.0) ay ganap na sinusuportahan ng Hibernate 3.5, na inilabas noong Marso, 2010.

Ano ang JPA?

Ang JPA ay isang framework para sa pamamahala ng relational data para sa Java. Maaari itong magamit sa mga application na gumagamit ng JSE (Java Platform, Standard Edition) o JEE (Java Platform, Enterprise Edition). Ang kasalukuyang bersyon nito ay JPA 2.0, na inilabas noong Disyembre 10, 2009. Pinalitan ng JPA ang EJB 2.0 at EJB 1.1 entity beans (na labis na pinuna dahil sa pagiging heavyweight ng komunidad ng developer ng Java). Bagama't nagbigay ang entity beans (sa EJB) ng mga persistence object, maraming developer ang ginamit sa paggamit ng medyo magaan na mga bagay na inaalok ng DAO (Data Access Objects) at iba pang katulad na frameworks. Bilang resulta, ipinakilala ang JPA, at nakuha nito ang marami sa mga maayos na tampok ng mga framework na binanggit sa itaas.

Pagtitiyaga gaya ng inilarawan sa JPA ay sumasaklaw sa API (tinukoy sa javax.persistence), JPQL (Java Platform, Enterprise Edition) at metadata na kinakailangan para sa mga relational na bagay. Ang estado ng isang persistence na entity ay karaniwang nananatili sa isang talahanayan. Ang mga pagkakataon ng isang entity ay tumutugma sa mga hilera ng talahanayan ng relational database. Ginagamit ang metadata upang ipahayag ang mga ugnayan sa pagitan ng mga entity. Ang mga anotasyon o hiwalay na mga XML descriptor file (na naka-deploy kasama ng application) ay ginagamit upang tukuyin ang metadata sa mga klase ng entity. Ang JPQL, na katulad ng mga query sa SQL, ay ginagamit upang mag-query ng mga nakaimbak na entity.

Ano ang Hibernate?

Ang Hibernate ay isang framework na maaaring gamitin para sa object-relational mapping na nilalayon para sa Java programming language. Higit na partikular, ito ay isang library ng ORM (object-relational mapping) na maaaring magamit upang i-map ang object-relational na modelo sa conventional relational na modelo. Sa simpleng mga termino, lumilikha ito ng pagmamapa sa pagitan ng mga klase ng Java at mga talahanayan sa mga relational na database, gayundin sa pagitan ng mga uri ng data ng Java hanggang SQL. Magagamit din ang hibernate para sa pag-query at pagkuha ng data sa pamamagitan ng pagbuo ng mga SQL na tawag. Samakatuwid, ang programmer ay hinalinhan mula sa manu-manong paghawak ng mga set ng resulta at pag-convert ng mga bagay. Ang hibernate ay inilabas bilang isang libre at open source na balangkas na ipinamahagi sa ilalim ng lisensya ng GNU. Ang pagpapatupad para sa JPA API ay ibinibigay sa Hibernate 3.2 at mga mas bagong bersyon. Si Gavin King ang nagtatag ng Hibernate.

Ano ang pagkakaiba ng JPA at Hibernate?

Ang JPA ay isang framework para sa pamamahala ng relational data sa mga Java application, habang ang Hibernate ay isang partikular na pagpapatupad ng JPA (kaya perpektong, ang JPA at Hibernate ay hindi direktang maihahambing). Sa madaling salita, ang Hibernate ay isa sa mga pinakasikat na framework na nagpapatupad ng JPA. Ipinapatupad ng Hibernate ang JPA sa pamamagitan ng mga library ng Hibernate Annotation at EntityManager na ipinapatupad sa itaas ng mga library ng Hibernate Core. Parehong sinusunod ng EntityManager at Anotasyon ang lifecycle ng Hibernate. Ang pinakabagong bersyon ng JPA (JPA 2.0) ay ganap na sinusuportahan ng Hibernate 3.5. Ang JPA ay may pakinabang ng pagkakaroon ng isang interface na na-standardize, kaya ang komunidad ng developer ay magiging mas pamilyar dito kaysa sa Hibernate. Sa kabilang banda, ang mga native na Hibernate API ay maaaring ituring na mas malakas dahil ang mga feature nito ay superset ng JPA.

Inirerekumendang: