JPA vs Hibernate
Yuav luag txhua daim ntawv thov kev lag luam yuav tsum tau nkag mus rau cov ntaub ntawv sib raug zoo tsis tu ncua. Tab sis ib qho teeb meem ntsib nrog cov thev naus laus zis ua ntej (xws li JDBC) yog qhov tsis sib xws ntawm impedance (qhov sib txawv ntawm cov khoom siv thiab kev sib raug zoo thev naus laus zis). Ib qho kev daws teeb meem rau qhov teeb meem no tau qhia los ntawm kev qhia txog cov txheej txheem paub daws teeb meem hu ua Persistence layer, uas encapsulates database nkag los ntawm kev lag luam logic. JPA (Java Persistence API) yog lub hauv paus rau kev tswj hwm cov ntaub ntawv sib raug zoo (siv txheej persistence) hauv Java daim ntawv thov. Muaj ntau tus neeg muag khoom siv ntawm JPA siv nyob rau hauv Java developer zej zog. Hibernate yog qhov nrov tshaj plaws xws li kev siv JPA (DataNucleus, EclipseLink thiab OpenJPA yog qee qhov lwm tus). Qhov tshiab tshaj plaws JPA version (JPA 2.0) tau txais kev txhawb siab los ntawm Hibernate 3.5, uas tau tshaj tawm thaum Lub Peb Hlis, 2010.
JPA yog dab tsi?
JPA yog lub hauv paus rau kev tswj cov ntaub ntawv sib raug zoo rau Java. Nws tuaj yeem siv nrog cov ntawv thov siv JSE (Java Platform, Standard Edition) lossis JEE (Java Platform, Enterprise Edition). Nws cov qauv tam sim no yog JPA 2.0, uas tau tshaj tawm thaum Lub Kaum Ob Hlis 10, 2009. JPA hloov EJB 2.0 thiab EJB 1.1 qhov chaw taum (uas tau raug thuam hnyav hnyav los ntawm Java developer zej zog). Txawm hais tias lub koom haum taum (hauv EJB) muab cov khoom siv tsis tu ncua, ntau tus neeg tsim khoom tau siv los siv cov khoom hnyav uas tau muab los ntawm DAO (Data Access Objects) thiab lwm cov qauv zoo sib xws. Raws li qhov tshwm sim, JPA tau tshaj tawm, thiab nws tau ntes ntau yam zoo nkauj ntawm cov qauv uas tau hais los saum toj no.
Kev ua siab ntev raws li tau piav qhia hauv JPA npog API (txhais hauv javax.persistence), JPQL (Java Platform, Enterprise Edition) thiab metadata xav tau rau cov khoom sib txheeb. Lub xeev ntawm ib lub koom haum persistence feem ntau yog nyob rau hauv ib lub rooj. Piv txwv ntawm ib qho chaw sib raug rau kab ntawm lub rooj ntawm cov ntaub ntawv sib raug zoo. Metadata yog siv los qhia txog kev sib raug zoo ntawm cov koom haum. Cov lus piav qhia lossis cais cov ntaub ntawv XML piav qhia (daim nrog daim ntawv thov) yog siv los qhia cov metadata hauv cov chav kawm. JPQL, uas zoo ib yam li SQL queries, yog siv los nug cov chaw khaws cia.
Hibernate yog dab tsi?
Hibernate yog lub moj khaum uas tuaj yeem siv rau cov khoom sib txuas ua ke npaj rau Java programming lus. Tshwj xeeb tshaj yog, nws yog ORM (object-relational mapping) lub tsev qiv ntawv uas tuaj yeem siv los qhia cov qauv kev sib raug zoo rau hauv cov qauv kev sib raug zoo. Hauv cov ntsiab lus yooj yim, nws tsim ib daim duab qhia ntawm Java cov chav kawm thiab cov ntxhuav hauv cov ntaub ntawv sib raug zoo, thiab ntawm Java rau SQL cov ntaub ntawv hom. Hibernate kuj tseem siv tau rau cov ntaub ntawv querying thiab retrieving los ntawm tsim SQL hu. Yog li ntawd, tus programmer tau txais kev cawmdim los ntawm phau ntawv tuav cov txiaj ntsig thiab hloov khoom siv. Hibernate raug tso tawm raws li lub hauv paus pub dawb thiab qhib qhov chaw faib raws li GNU daim ntawv tso cai. Ib qho kev siv rau JPA API yog muab rau hauv Hibernate 3.2 thiab tom qab versions. Gavin King yog tus tsim ntawm Hibernate.
Qhov txawv ntawm JPA thiab Hibernate yog dab tsi?
JPA yog lub hauv paus rau kev tswj cov ntaub ntawv sib raug zoo hauv Java daim ntawv thov, thaum Hibernate yog ib qho kev siv ntawm JPA (yog li qhov zoo tshaj plaws, JPA thiab Hibernate tsis tuaj yeem sib piv ncaj qha). Hauv lwm lo lus, Hibernate yog ib qho ntawm cov qauv nrov tshaj plaws uas siv JPA. Hibernate siv JPA los ntawm Hibernate Annotation thiab EntityManager cov tsev qiv ntawv uas tau ua los ntawm Hibernate Core cov tsev qiv ntawv. Ob leeg EntityManager thiab Annotations ua raws li lub neej ntawm Hibernate. Qhov tshiab tshaj plaws JPA version (JPA 2.0) tau txais kev txhawb siab los ntawm Hibernate 3.5. JPA tau txais txiaj ntsig los ntawm kev muaj kev sib txuas uas yog tus qauv, yog li cov neeg tsim tawm hauv zej zog yuav paub ntau dua li Hibernate. Ntawm qhov tod tes, haiv neeg Hibernate APIs tuaj yeem suav tias muaj zog dua vim tias nws cov yam ntxwv yog superset ntawm JPA.