Hibernate at JPA

Anonim

Ang mga aplikasyong Java ay tradisyonal na ginamit na teknolohiya tulad ng JDBC (Java Database Connectivity) upang ma-access ang mga database ng pamanggit upang patuloy na mag-imbak ng data. Ang pangunahing problema ay ang pagkakaiba sa pagitan ng mga object-oriented at relational na teknolohiya. Kinakailangan ng JDBC API ang mga developer na i-hand-code ang pinaka-primitibong CRUD (lumikha, magbasa, mag-update, at magtanggal) ng mga operasyon sa SQL na kulang ang maaaring dalhin.

Bukod pa rito, ang code ay lubos na nakasalalay sa SQL na kung saan ay hindi isang standard na detalye para sa mga database ng relational, na kung saan ay gumawa ng paglipat mula sa isang database sa isa pang mas mahirap. Ang problema ay ang relational na teknolohiya ay nakatuon sa data at relasyon nito, samantalang ang object-oriented paradigm ay nagbibigay diin hindi lamang sa data kundi pati na rin ang mga pagpapatakbo na isinagawa dito. Nagreresulta ito sa object-relational impedance mismatch. Ang isang solusyon na malawak na tinatanggap ay object-relational mapping (ORM).

Ano ang Hibernate?

Ang pagtulog sa panahon ng taglamig ay isang balangkas ng ORM (Object / Relational Mapping) para sa wika ng Java programming na nababahala sa pagpapatuloy ng data. Ito ay isang open-source object-relational mapping solution na naglalagay ng mga klase sa Java sa mga talahanayan ng database sa mga pamanggit na database at mula sa Java hanggang sa mga uri ng SQL na data. Ito ay isang magaan timbang ORM balangkas na ipinamamahagi sa ilalim ng lisensya ng GNU na naglalayong magbigay ng mga developer na may isang transparent na mekanismo upang makamit ang pagtitiyaga. Gumagamit ito ng isang malakas na wika ng query katulad ng SQL na tinatawag na HQL (maikli para sa Hibernate Query Language), na mabilis na sumasama sa parehong umiiral at bagong mga application nang hindi binabago ang natitirang bahagi ng application. Dagdag dito, ito ay ganap na sumusunod sa mga object-oriented notions tulad ng inheritance, polymorphism, at asosasyon. At ang pinakamagandang bahagi, hindi ito nangangailangan sa iyo na baguhin ang klase ng application upang makamit ang pagtitiyaga.

Ano ang JPA?

Ang Java Persistence API, o JPA, ay isang detalye na naglalarawan ng interface para sa object-relational mappings at persistent management object. Higit pa sa kahulugan ng API, tinutukoy nito ang hanay ng mga alituntunin at mga alituntunin kung paano ipatupad ang pamanggit na pamanggit na mapa at kung paano gagawin ang mga pagtutukoy na sumusunod sa lahat ng mga tagapagbigay ng JPA. Ang pagtulog sa panahon ng taglamig ay ang pinaka-advanced at malawak na ginagamit ng pagpapatupad ng ORM ng mga patnubay ng JPA. Nagbibigay lamang ang JPA ng object / relational mapping platform para sa pamamahala ng data sa pagitan ng mga bagay / klase ng Java at isang pamanggit database sa mga application ng Java. Ito ay isang pagtutukoy ng interface na idinisenyo para sa mga vendor ng pagpapatupad ng JPA upang lumikha ng isang pamantayan para sa pagpapatupad ng ORM upang ma-target ang mataas na pagganap ng data access layer kinakailangan. Ang hibernate ay ang pinakasikat na vendor ng JPA.

Pagkakaiba sa pagitan ng Hibernate at JPA

Mga Pangunahing Kaalaman ng Hibernate at JPA

Ang JPA, maikli para sa Java Persistence API, ay isang pagtutukoy para sa pag-access, pamamahala at pagpapatuloy ng data sa mga application gamit ang Java Platform, Standard Edition (Java, SE) at Java Platform, Enterprise Edition (Java, EE). Ang pagtulog sa panahon ng taglamig, sa kabilang banda, ay higit pa sa isang tool para sa pagpapatupad ng ORM na sumusunod sa mga pagtutukoy ng JPA.

Layunin ng Hibernate at JPA

Ang JPA ay isang pagtutukoy para sa object-relational mapping sa Java na nagpapahintulot sa mga developer na magsagawa ng mga pagpapatakbo ng database nang mas mabilis at mahusay na sa gayon ay nagbibigay-daan para sa madaling pakikipag-ugnayan sa mga database. Ito ay ang pamantayang API para sa pagpapanatili at object na pamanggit na pagmamapa na nagbibigay ng maraming pakinabang sa mga developer para sa mga operasyon ng data na may hangganan. Ang pagtulog sa panahon ng taglamig ay isang open-source Object na relational mapping tool na nagpapadali sa pagpapaunlad ng mga aplikasyon ng Java upang makagawa ng pagkonekta sa mga database nang mas madali kaysa kailanman.

Dependability ng Hibernate at JPA

Ang problema sa JPA ay na ito ay isang detalye lamang na hindi nagbibigay ng anumang mga klase ng pagpapatupad. Ang API ay isang koleksyon lamang ng mga klase at pamamaraan upang mag-imbak ng data nang husto sa isang database kasunod ng isang tiyak na hanay ng mga alituntunin at regulasyon na dapat sundin ng mga vendor ng JPA. Ang hibernate ay isa sa maraming mga vendor sa pagpapatupad ng JPA na nagpapatupad ng pagtutukoy ng JPA sa anumang kapaligiran na sumusuporta sa JPA kabilang ang Java SE at Java EE application server.

Mga Tampok sa Hibernate at JPA

Bukod sa pagiging ang pinakasikat na vendor ng pagpapatupad ng JPA, ang Hibernate framework ay nagpapanatili sa kanyang katutubong API para sa pagtataguyod ng pabalik na pagkakatugma at pagtanggap din ng mga hindi karaniwang mga tampok. Ang pagtulog sa panahon ng taglamig ay may ilang mga tampok na hindi sinusuportahan ng Java Persistence API tulad ng pinalawig na tagabigay ng pagkakakilanlan, bagong Petsa at Oras API, mga repeatable annotation, mga resulta ng query ng steam, napapasadyang CRUD na pahayag, hindi nababago na mga entity, suporta sa natural na ID, ad hoc na sumali sa mga hindi nauugnay na entidad, atbp.

EntityManager kumpara sa Session

Ang EntityManager ay ang pamantayan para sa pagpapatupad ng spesipikasyon ng JPA na pareho sa lahat ng mga pagpapatupad. Sa kabilang banda, kung gusto mong gamitin ang Hibernate API, pagkatapos ay gagamitin mo ang Hibernate na tukoy na Session upang mahawakan ang pagtitiyaga. Gayunpaman, hindi ka makakapag-migrate sa isang bagong vendor kung pipiliin mong gamitin ang Session dahil ito ay limitado sa mga Hibernate API.

Hibernate kumpara sa JPA: Paghahambing Tsart

Buod ng Hibernate kumpara sa JPA

Halos lahat ng mga aplikasyon ng enterprise ay nangangailangan ng ilang paraan upang patuloy na mag-imbak ng data. Ito ay mahalaga sa mga aplikasyon ng enterprise dahil sa kinakailangang pag-access sa mga pamanggit na database.Ang pagtitiyaga ay isang pangunahing konsepto sa pag-unlad ng application at isang hamon sa kanyang sarili dahil sa pangangailangan na mag-serialize ang hierarchically nakabalangkas na mga bagay sa Java sa isang database sa isang paraan na parehong mabilis at mahusay. Habang ang pagpapatuloy ay naging isang mainit na paksa ng diskusyon sa komunidad ng Java, maraming mga developer ay hindi sumasang-ayon sa saklaw ng problema. Sa konteksto ng wika na nakatuon sa object, ang pagtitiyaga ay nangangahulugang ang data ay maaari pa ring mapuntahan kahit na matapos ang proseso na nilikha nito. Mayroong maraming mga paraan upang mapanatili ang data nang tuluy-tuloy. Ang hibernate ay isa sa mga naturang proyekto na naglalayong magbigay ng isang kumpletong solusyon sa problema ng pagtitiyaga sa Java, samantalang ang JPA ay isang detalye para sa pamamahala ng mga persistent data at object-relational mappings.