Caij nplooj ntoos hlav Tutorial – JPA (Java persistence API) nqaij npuas

Spring Data JPA

Caij nplooj ntoos hlav Tutorial – JPA (Java persistence API) nqaij npuas

Txheej txheem cej luam

Lub Hom Phiaj Relational Mapping (ORM) Tswvyim yog npaum-favoured hnub no vim yog tus txheeb ze nws muaj dua relational database lub nruab. ORM ua tswj database ib txoj hauj lwm yooj yim dua ua relational database systems. Enterprises xav siv sij hawm tsawg li lub sij hawm tau rau modifying SQL queries thaum database hom yuav hloov. Caij nplooj ntoos hlav JPA, uas yog ORM-based, SQL queries database agnostic raws li tej yam mob. Muab lub peev xwm ntawm JPA, ntej lwm cov ntaub ntawv tso tshuaj kom muaj nyob rau hauv lub lag luam.








LOSSIS DAB TSI?

Object Relationship Mapping (ORM) yog ib txoj kev rau mapping database ntxhuav rau hoob kawm. ORM nruab nrab yog ib txoj kev tshiab uas querying database. Qhov txawv ntawm lub ORM-way of database querying thiab SQL-zoo li querying yog tias tom kawg no tsuas siv tau rau hauv rooj plaub ntawm SQL tiam sis ORM query yuav ua hauj lwm rau tej database. ORM ua software daim ntawv thov kev pab cuam.

Thaum twg tus ORM txoj kev thov lawm, Txhua lub rooj sab laj database mapped rau ib hoob kawm. Ob lub frameworks muaj rau kev siv rau kev siv cov ORM: Hibernate Framework thiab cov Java Persistence API. To taub qhov tseem ceeb ntawm ORM, cia siv ib qho piv txwv. Peb tes num siv MySQL tab sis yog ua tom qab ib hnub siv Oracle xwb. Qhov no, Tsis tas yuav hloov qhov nruab nrab lig vim hais tias tus ORM ntiaj teb no nyob rau hauv qhov xwm. Qhov kev hloov hauv lub query yuav tsawg heev nyob rau hauv qhov xwm.

Vim li cas JPA?

Muaj ntau txoj kev xaiv uas muaj software developers rau cia thiab retrieving pheej cov ntaub ntawv nyob rau hauv cov database uas muaj serialization, JDBC, Khib, proprietary propect-relational mapping cuab yeej, khoom databases, thiab EJB 2 taum. Txawm li cas los, tsuas yog JDO, tag nrho cov kev xaiv no txwv. JPA overcomes cov kev txwv no thiab muab ib cov ntaub ntawv rhuav tshem cov ntaub ntawv yooj yim. Nws kuj ho txo cov kev overhead tasks software developers yuav tsum ua thaum lawv tswj database haujlwm. Muab nram qab no yog ob peb compelling vim JPA yog ib cov ntaub ntawv uas tau muab ua kom haum.

Tag nrho cov peevxwm

Txawm yuav luag tag nrho cov ntaub ntawv persistence frameworks los yog cuab yeej txwv rau lawv cov peev xwm, JPA mus ntau kauj ruam tshaj ntawd. Muab ob peb qho piv txwv ntawm lwm cov cuab yeej, Nrog Serialization, Nws yog ib qho yooj yim rau khaws cov ntaub ntawv yooj yim, Tsis muaj peev xwm tswj tau ntau cov ntaub ntawv. JDBC API yog ib txoj kev xaiv dua Serialization tab sis nyuaj rau siv tsis yooj yim. ORM mapping frameworks muaj txwv vim lawv yog ua txhua yam los ntawm vendor-specific databases. JPA combines lub zog ntawm lub nruab zog hais saum toj no tiam sis kuj overcomes lawv cov kev txwv.

Tsis muaj neeg ua hauj lwm tasks

Tswj database haujlwm yog ib qho peev proposition vim hais tias nws yuav tsum tau lub sij hawm thiab dag zog. JPA tso cai rau software developers kub siab rau lawv cov tub ntxhais txoj hauj lwm thiab yuav saib xyuas kev tswj database. Enterprises yeej yuav devote ntau zaus ntawm tub ntxhais tub ntxhais, feem ntau cov hauj lwm.

Database agnostic

Hloov Kho SQL queries nyob ntawm txawv databases yog ib qho kev pab cuam prosposition. Tab sis yog tag nrho databases txais SQL raws li txheem, SQL dialects txawv. JPA muab ib database independent-agnostic sab saum toj ntawm SQL. Qhov no tshem cov dependency ntawm SQL rau databases.

Lub caij nplooj ntoos hlav JPA?

Caij nplooj ntoos hlav JPA, kuj paub tias lub caij nplooj ntoos hlav Ntaub ntawv JPA, Yog ib qho API uas facilitates siv JPA kuas repositories. Nws kuj yog ib qho teeb meem rau siv cov ntaub ntawv txheej txheem vim yog txoj kev koom tes nrog pab. Muaj ntau heev ntawm code kom tau DVR cia li tseg straightforward queries; tshawb xyuas tej ntaub ntawv auditing and pagination. Lub caij nplooj ntoos hlav JPA no cov ntsiab lus ntawm cia tus tsim tawm ntawm lawv lub ntsiab kev ua hauj lwm – sau ntawv rov qab rau kev cuam tshuam uas muaj kev lis kev cai nrhiav – thiab kev saib xyuas txog kev siv cov tshuaj no. Cov ntseg nta Caij nplooj ntoos hlav ntaub JPA yog:

  • Kev them nyiaj yug rau kev them nyiaj yug rau XML kuas mapping.
  • Transparent domain class auditing.
  • Kev them nyiaj yug rau kev pagination thiab dynamic query tiav.
  • Kev them nyiaj yug rau integrating cov ntaub ntawv siv.
  • JavaConfig raws configuration ntawm repository los plaug @EnableJpaRepositories.

Cov ORM muaj dab tsi?

Lawm ib ua haujlwm los ntawm relational database rau khoom database vim hais tias cov tom kawg muaj comparative advantages lawm tus qub. Enterprises muaj teeb meem loj rau cov ntaub ntawv uas muaj relational database. Khoom databases ua tau zoo tshaj plaws, retrieving, kho yooj yim, thiab kho kom haum rau cov databases. Thaum cov tub ntxhais ntawm cov databases yog cov los yog lawv.xml uas, obviously, yog XML kuas. Vim hais tias tsis muaj yuav tsum tau los compile XML, Nws yog ib qho yooj yim rau edit ntau cov ntaub ntawv uas muaj tsawg kawg nkaus. Kwvyees Relational Mapping (ORM) Yog ib hom kev kawm programming txheej txheem los hloov cov ntaub ntawv rau yam khoom thiab vice versa. Lub ntsiab ORM components muaj nyob hauv qab no:

  • Muaj peev xwm sau cov hoob kawm uas muaj kev pab los ntawm hoob kawm.
  • Ruaj khov thiab txhim khu kev qha, qhov chaw mos thiab ntau yam.
  • Ua tau zoo architecture.

Teeb ib puag ncig:

Teem tau qhov chaw rau lub caij nplooj ntoos hlav raws li txoj kev loj hlob uas yog peb kauj ruam loj.

  • Teem java kev loj hlob Java txoj kev loj hlob

Download JDK Ntawm qhov chaw Oracle thiab ces, nruab nrab thiab configure. Ces cov PATH thiab JAVA_HOME chaw yuav tsum muab teev tseg.

  • Teev ntawm Eclipse tswv yim

Eclipse yuav tsum downloaded ntawm nom website. Ib zaug downloaded, tsis them cov binaries thiab ces muab lub PATH thiab.

  • Teeb lub caij nplooj ntoos hlav qiv nrog cov ntaub ntawv JPA

Lub caij nplooj ntoos hlav lub caij nplooj ntoos hlav (Spring libraries). http://repo.spring.io/release/org/springframework/spring/. Dua, tseem ceeb heev uas yuav tau teem caij rau CLASSPATH kom yog.








Tam sim no koj ib puag ncig yuav pib lub caij nplooj ntoos hlav JPA nrog Java daim ntaub ntawv.

Coj daim ntawv:

Nyob rau hauv tshooj no peb yuav tsim ib yam khoom khoom thiab cov neeg nyob nrog cov ntaub ntawv. Peb yuav siv lub caij nplooj ntoos hlav JPA rau cov ntaub ntawv persistence.

Qhia 1: Qhov no yog ib hoob kawm poJO uas muaj cov ntaub ntawv

pob techalpine.spring.jpa.com;

pej xeem hoob Khoom {

//Qhov no yog cov hoob poJO

lwm yam rau cov menyuam daim;

lwm yam Txoj hlua npe;

lwm yam ob chav nqe;

pej xeem Khoom(rau cov menyuam daim, Txoj hlua npe, ob chav nqe)

{

no.ntxheev;

no.npe;

no.nqe nqe;

}

pej xeem rau cov menyuam neeg sib tw() {

rov qab mus daim;

}

pej xeem khoob lug txheej(rau cov menyuam daim) {

no.nyoos =;

}

pej xeem Txoj hlua getName() {

rov qab mus lub npe;

}

pej xeem khoob lug setName(Txoj hlua npe) {

no.lub npe = lub npe;

}

pej xeem ob chav nqe() {

rov qab mus nqe;

}

pej xeem khoob lug septrice(ob chav nqe) {

no.nqe nqe;

}

}

Tom qab no yog tus XML configuration ntaub ntawv rau mapping database rooj nrog lub poDJ teb.

Qhia 2: Qhov no yog XML mapping nrog lub rooj

<?xml version =“1.0” encoding =“UTF-8”?>

<chaw-mappings version=“1.0”

xmlns =“http://java.sun.com/xml/ns/persistence/orm”

xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation =“http://java.sun.com/xml/ns/persistence/orm

http://java.sun.com/xml/ns/persistence/orm_1_0.xsd “>

<hoob kawm=techalpine.caij nplooj ntoos hlav.jpa.com Khoom”>

<rooj npe=“Khoom”></Rooj>

<pas>

<npe=“daim”>

<npe menyuam yaus lub npe=“daim”/>

</daim>

<lub npe tis npe=“lub npe”>

<npe menyuam yaus lub npe=“lub npe”/>

</yooj yim>

<lub npe tis npe=“nqe”>

<npe menyuam yaus lub npe=“nqe”/>

</yooj yim>

</pas>

</qhov chaw>

</kev ntxias-mappings>

Tom qab no yog tus DAO chav kawm ntawv rau qhov khoom uas tsim nyog.

Qhia 3: Qhov no yog DAO chav kawm ntawv rau qhov khoom

pob khoom techalpine.spring.jpa.com;

ntshuam java.util.List;

Import.springframework.org.jpapemplate;

import.springframework.transaction.annotation.Transactional;

@Transactional

Pej xeem hoob kawm {

Jptapemplate template;

pej xeem void setemplate(Jptapemplate template) {

qhov no... template = template;

}

pej xeem tsis txhob ua tswvcuab(nkaum,Txoj hlua npe,nqe){

Khoom siv = khoom tshiab(daim,lub npe,nqe);

pheejyig npaum licas(Khoom);

}

Daim Ntawv Teev Npe<Khoom> GetAllProducts(){

Sau<Khoom> Cov khoom =template.nrhiav(“xaiv los ntawm cov khoom muag”);

rov qab los;

}

}

Qhov no yog daim ntawv thov cov ntsiab lus teb rau mapping tag nrho cov taum.

Qhia 4: Daim ntawv thov

<?xml version =“1.0” encoding =“UTF-8”?>

<taum xmlns =“http://www.springframework.org/schema/beans”

xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”

xmlns:txheej thawv.“http://www.springframework.org/schema/tx”

xsi:schemaLocation =“http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-3.0.xsd”>

<pw ua ke:annotation-uas tau tsav transaction-manager=“jpaxTnManagerBean” hom phiaj-kawm proxy-hoob kawm=“tseeb”/>

<taum daim id =“datacSBean” hoob =“org.springframework.jdbc.datasource.driverManagerDataceSource”>

<lub npe ntawm tus kheej =“driverClassName” tus nqi =“oracle.jdbc.dbc.OracleDriver”></khoom>

<lub npe ntawm tus kheej =“url” tus nqi =“jdbc:los ntshav:Nyias:@localhost:1524:tom ntej”></khoom>

<lub npe ntawm tus kheej =“username” tus nqi =“ntsuam xyuas”></khoom>

<lub npe ntawm tus kheej =“lo lus zais” tus nqi =“kev xeem ntawv xeem”></khoom>

</taum>

<taum daim id =“hbadptrBean” hoob =“org.springframework.org.jpa.vendor.HibernateJapVendorAdapter”>

<lub npe ntawm tus kheej =“qhia tau hais tias” tus nqi =“tseeb”></khoom>

<lub npe ntawm tus kheej =“ua kom muaj yooj yim” tus nqi =“tseeb”></khoom>

<lub npe ntawm tus kheej =“databasePlatform” tus nqi =“org.hibernate.hibernate.org.OracleDial”></khoom>

</taum>

<taum daim id =“ntxeev siab” hoob =“org.springframework.org.jpa.jpa.LocalContainEnterFactoryFactoryBean”>

<lub npe ntawm tus kheej =“dataSource” nyob =“datacSBean”></khoom>

<lub npe ntawm tus kheej =“jpaVendorAdapter” nyob =“hbadptrBean”></khoom>

</taum>

<taum daim id =“jpTmlptBean” hoob =“org.springframework.org.jpapemplate”>

<lub npe ntawm tus kheej =“Tus Saib Xyuas Kev Tswj (ManagerFactory)” nyob =“ntxeev siab”></khoom>

</taum>

<taum daim id =“khoom” hoob = techalpine.caij nplooj ntoos hlav.jpa.com khoom”>

<lub npe ntawm tus kheej =“Template” nyob =“jpTmlptBean”></khoom>

</taum>

<taum daim id =“jpaxTnManagerBean” hoob =“org.springframework.org.jpa.JpaTransactioner”>

<lub npe ntawm tus kheej =“Tus Saib Xyuas Kev Tswj (ManagerFactory)” nyob =“ntxeev siab”></khoom>

</taum>

</taum>

Tam sim no, Qhov no yog lub ntsiab class mus xyuas cov pejxeem ntawm cov khoom thiab retrieve nws los ntawm tus database.

Qhia 5: Qhov no yog lub ntsiab class mus xyuas cov zis

pob techalpine.spring.jpa.com;

ntshuam java.util.List;

ntshuam org.springframework.context.application;

ntshuam org.springframework.context.context.support.FileSystemPlContXAPLContx;

pej xeem hoob zaub mov {

pej xeem zoo li qub khoob lug ntsiab(Txoj hlua[] args){

Application Application context = tshiab FileSystemMaXLplication(

“META-INF/applicontext.xml”);

Cov khoom uas siv rau hauv cov khejdaws = context.getBean(“khoom”,khoom.hoob);

khoom... tsim kom muaj(123,”khoom″,233.55);

khoom... tsim kom muaj(20,”khoom″,350.70);

Tsim.tawm.println(“Tsim kom muaj kev vam meej”);

Sau<Khoom> Khoom = khoom = khoom siv uas muaj npe hu ua Productao.getAllProducts();

System.out.println(“Cov ntsiab lus ua yog:”);

rau (rau cov menyuam Kuv = 0; Kuv < khoom.size(); i ) {

Khoom = cov khoom uas muaj products ...(Kuv);

Tsim.tawm.println(neeg zov me nyuam."() + ” : ” + pro.proname() + ” (” + proceprice() + “)”);

}

}

}

Ib hoob kawm no tseg, tom qab tso zis yuav muab tso tawm.

Tsim kom muaj kev vam meej

Cov ntsiab lus ua yog:

123:khoom:233.55

20:khoom:350.70








Xaus

Txij thaum JPA thiab ORM muaj ob yam raws li XML, Lawv dependence nyob rau lwm lub tshuab los yog muab cov ntsiab tseem tsis tau muaj lwm haiv neeg. Txawm li cas los, Tsab cai idea los ntawm ORM thiab JPA yuav siv sij hawm mus nrhiav ib co kev tsheb ciav hlau vim enterprises yuav tsum tau sij hawm txav kom deb ntawm txojsia database systems. Tseem, Tus neeg mloog yog tawm ntawm seb tus JPA yog ib qhov teeb meem rau txhua yam teeb meem database raws li nws yog ib qhov yuav tau.

 

============================================= ============================================== Yuav zoo TechAlpine phau ntawv rau Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Txaus siab rau qhov blog? Tshaj tawm lus thov :)

Follow by Email
LinkedIn
LinkedIn
Share