Cov kauj ruam yuav ua hauj lwm nrog Java Persistence API?

Working with JPA

Ua hauj lwm nrog JPA

Txheej txheem cej luam:

Lub JPA, los yog cov Java Persistence API, Ib qho kev tshwj xeeb uas txhais tau tias txawv Java khoom los sis hoob kawm thiab sib tham nrog cov ntaub ntawv nyob rau hauv ib lub Java database. Nws yog ib qhov ntau le caag los ORM (Khoom siv rau Relational Mapping), Tab sis tam sim no nws yog txais raws li tus txheej txheem tshaj plaws hauv Java. Lub sij hawm ORM ua tau xa mus rau txoj kev uas mapping, uas yuav ua li cas nrog cov khoom Java, ntxhua khaub ncaws. JPA tsis tau muab siv rau nws tus kheej, Li no tsuas yog ib qho Java specification. Yuav tau siv cov kev qhia no los yog interfaces, yuav tsum ua kom tiav. Muaj ntau ntau yam kev siv uas yog dawb thiab qhib-qhov chaw.

JPA Kuj xav tau ib tug Java database thiaj li yuav qhia cov khoom. JPA yuav persist thiab daim ntawv qhia txog ntau yam khoom, Nrog rau kev daws Java Objects (POJ NIAM). Nws tsis txawm yuav muaj ib txoj kev los yog kev cuam tshuam rau hoob kawm uas muaj ntau hom khoom, tsis zoo li cov predecessor EJB 2 CMP, uas yuav tsum tau txhaj ntxiv rau hoob kawm. siv JPA, Cov khoom uas muaj cov khoom yooj yim txhais tau hais tias yog yooj yim npaum li cas los ntawm cov ntawv tshaj tawm yooj yim, los yog tsim ib qho chaw uas siv XML. Qhov no tso cai rau lub hom phiaj kom tau mapped in relation to database. JPA txawm muaj txawv APIs rau cov txhais cov ntsiab lus, Zoo li tus neeg saib xyuas API rau tswj XML kev ua si, uas yog queries khiav alongside lub database. JPL kuj muaj ib cov lus nug tshwj xeeb rau querying cov khoom.







Vim li cas peb yuav tsum tau JPA?

Muaj ntau hom kev kawm rau tus neeg siv rau mapping Java khoom hauv relational databases, piv txwv JDO, EJB 2 (cov predecessor ntawm JPA), kwv yees thiab tau kawg, serialization. Li ntawd, Vim li cas peb yuav tsum tau lwm API txhua? Qhov no yog vim feem ntau ntawm cov frameworks muaj ntau yam teeb meem ntau. JPA, rau lwm cov tes, yog los ntawm adopting tag nrho cov kom zoo dua no thiab merging lawv mus rau ib cais API uas tsis yuav tsum tau muaj ib yam ntawm lawv. Tej lub disadvantages ntawm cov APIs no muab hauv qab no.

  • Khib: JDO pom tias yog ib lub cuab tam zoo tshaj plaws rau khoom mapping. Nws muaj ze li ntawm tag nrho cov nta tias JPA muaj, thiab kuj yooj yim heev rau siv. Txawm li cas los, Nws tsis muaj ib qho tseem ceeb heev feature ntawm JPA, i.e. nws txhawb tsuas tsis-relational databases, uas renders ntau ntawm nws cov neeg siv cov khoom siv obsole. Rau lwm cov tes, JPA txhawb ob relational thiab cov-relational databases.
  • EJB 2: EJB, los sis Enterprise Java beans, Nkag tau rau hauv lub Enterprise tsab ntawm Java. Nws muaj ntau nta, nrog rau cov txheej txheem NPE lub nruab nrog cev tsis tsheej. Txawm li cas los, Nta ntau nta ntau nta yog tsis nyob hauv no specification. Tseem, Kim servers yuav tsum khiav cov chaw muab kev pab-hogging no specification.
  • Serialization: Qhov no yog lub built-in muaj nuj nqi uas tso cai rau lub transformation ntawm khoom rau hauv cov ntaub ntawv. Qhov no yog ib qho yooj yim heev uas yuav siv tau yooj yim. Txawm li cas los, Nws kuj lacks ntau nta ntawm peb tog specifications. Nws tsis tau kov cov ntaub ntawv raws li nws xav tau los tom khw tag nrho cov khoom tag nrho txawm tias thaum ua hauj lwm rau ib feem ntawm cov graph. Tseem, Nws lacks cov ntaub ntawv ntseeg li nws tsis tau hloov ua thaum tshiab. Lwm cov kev txwv loj ntawm no framework yog tias thaum muaj ntau hom threads yog accessing cov ntaub ntawv rau cov ntaub ntawv rau cov neeg muab kev pab, lawv muaj kev tsis sib haum xeeb, lub kaw lus stability. Yog li, serialization Muaj tsawg kawg nkaus siv rau txoj kev loj hlob.

JPA adopts thiab txawm builds li tag nrho cov nta ntau hom kev kawm, thiab kuj sib txuas lus lawv. Nws yog compatible nrog ntau hom databases, muaj kev ruaj ntseg, promotes cov ntaub ntawv ntseeg thiab muaj kev siv uas ob leeg editions editions thiab txheej txheem ntawm Java.








Kev siv JPA – Cov koog tsev kawm ntawv yog dabtsi?

Muaj ntau ntau yam sib txawv ntawm JPA. Hauv tej yaam num relational mapping, lub ntsiab yog qhov mapping.xml ntaub ntawv. ORM pub rau conversion ntawm tej ntaub ntawv los ntawm qhov kev sib tham los yog cov converse. Nws binds cov ntaub ntawv rau ib yam twj paj nruas rau nws tus kheej.

ORM consists ntawm kev sib tham ntawm peb theem. Thawj theem, Kuj hu ua cov Ntaub ntawv Objecta, Muaj ntau hom kev kawm thiab kev pab cuam interfaces. Nws zoo ib yam ntawm lub ntsiab ua lag ua luam logics thiab components.

Theem ob yog hu ua tus persistence theem uas lub ntsiab components interacting yog Object Grid, lossis .xml mapping ntaub ntawv thiab tus neeg zov me nyuam JPA.

Nyob rau hauv cov theem thib peb, los yog tus duab ntxoov ntxoo, Cov ntaub ntawv mapped yog systematically txuas nrog lub lag luam txheej, Qhov twg nws yog muab tso rau hauv lub cache nco. Tom qab lub lag luam tseg paub tseeb hais tias cov ntaub ntawv, txuas mus rau lub database.

JPA JPA architecture

Tus architecture ntawm JPA zoo ib yam li cov EntagerFactory, Tus Neeg Saib Xyuas, Tej yam khoom muaj nqi, los yog.xml teev thiab sib sau ua ke. Tus JPA architecture yog raws li qhov java programming framework, uas muaj ob lub EE thiab SE environments ntawm Java. Tseem, cov architecture muaj ib hom lus nug hu ua JPQL.

Ib txhia cov components no muab hauv qab no:

  • Tus Saib Xyuas Kev Tswj (ManagerFactory): Qhov no yog ib qho tseem ceeb heev thaum nws tsim cov instances ntawm tus thawj tswj. Ua ntej tus shutdown ntawm daim ntawv thov, Tus thawj tswj yuav tsum raug kaw thiaj li yuav tiv thaiv tau lub creation ntawm cov chaw. Tom qab nws yog terminated, Tag nrho cov txheej txheem Manager processes ntawm nws yog me kaw. Nws tsim Entmanager processes nyob hauv lub ntsiab lus teb ntawm lub chav tsev persistence.
  • Tus Neeg Saib Xyuas: Qhov no tivthaiv tau ua hauj lwm ntawm kev tswj cov chaw. Tseem, nws interacts nrog cov chaw tos tsheb yog tsim, khoov los yog rhuav tam sim ntawd. Ntxiv, Tej zaum muaj ntau yam kabmob API yuav tsim los ntawm tus thawj tswj fwm.
  • qhov chaw: Cov khoom no yog cov ntaub ntawv ua tau muab tso rau hauv lub database.
  • Kev Kho Hniav (EntityTransaction): Qhov no yog cov hoob kawm uas ua tau tswj cov hauj lwm ua los ntawm tus Entmanager.
  • Persistence: Hoob kawm no tso cai rau lub creation of EntmanagerFactory lom yog muab cov kev pab rau nws cov deployment
  • Query: Lwm JPA vendor txhawb qhov kev kawm no mus muab cov ntaub ntawv relational cov ntaub ntawv.



Teeb ib puag ncig:

Yuav kom paub meej tias qhov chaw raws li cov kauj ruam nram qab no yog cov kauj ruam nram qab no

  • Download tau JDK ntawm qhov link hauv qab no thiab muab ib txog kev faib chav kawm ntawv

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Tam sim no koj ib puag ncig yog npaj sau JPA kawm nyob rau hauv Java. Nyob rau sab tom ntej no peb yuav tsim ib co qauv siv.

Coj daim ntawv:

Nyob rau hauv qhov piv txwv no peb yuav tsim ib qho JPA daim ntawv thov hauv Eclipse IDE. Ua ntej tsim ib qhov JPA peb tes num ua muaj nyob rau hauv cov kev tshuaj ntsuam nram qab no.

Create JPA project

Tsim JPA qhov project

Duab 1: Tsim JPA qhov project

Tam sim no, Download tus Eclipselink li muaj nyob rau hauv cov kev tshuaj ntsuam nram qab no. Qhov no yuav tsum tau ua raws li qhov JPA APis hauv peb tes num.

Select version to download

Xaiv version mus download

Duab 2: Xaiv download version

EclipseLink

EclipseLink

Duab 3: EclipseLink download

Tam sim no, Qhia rau peb saib cov lus teb code.

Qhia 1: Qhov no yog cov hoob kawm los tsim tau ib tug neeg ua hauj lwm kwv tij

[chaws]

pob khoom techalpine.jpa.com;

Import javax.persistence.Entmanager;

Import javax.persistence.EntmanagerFactory;

import javax.persistence.persistence.persistence;

Import techalpine.jpa.com.EmpObj;

Pej xeem hoob kawm tsim {

pej xeem tsis muaj dabtsis loj zoo li qub(Txoj hlua[] args) {

EntmanagerFactory emfactory = Persistence.createManagerFactory(“JPADemop”);

Tus tswj lub chaw tswj fwm = emfactory.createManager();

tus neeg saib xyuas.getTransaction().Pib();

EmpOb empob = EmpObj();

empob.setEmpid(111);

empob.setEmpname(“Siav”);

empob.setEmpsal(30000);

empob.setEmpeg(“Engineer (Engineer)”);

tus neeg saib xyuas.pheej(empob);

tus neeg saib xyuas.getTransaction().yoojyim();

tus neeg saib xyuas...();

kaw.dhia();

}

}

[/chaws]

Qhia 2: Qhov no yog cov hoob kawm hloov ib tug neeg ua hauj lwm

[chaws]

pob khoom techalpine.jpa.com;

Import javax.persistence.Entmanager;

Import javax.persistence.EntmanagerFactory;

import javax.persistence.persistence.persistence;

Import techalpine.jpa.com.EmpObj;

Pej xeem hoob kawm hloov yuam cai {

pej xeem tsis muaj dabtsis loj zoo li qub(Txoj hlua[] args) {

EntmanagerFactory emfactory = Persistence

.createityManagerFactory(“Eclipselink_JPA”);

Tus tswj lub chaw tswj fwm = emfactory.createManager();

tus neeg saib xyuas.getTransaction().Pib();

EmpOb EmpObj = tus thawj tswj fwm nrhiav tau(EmpObj.class, 101);

// ua ntej muab kho yus

System.out.println(EmpObj);

EmpOb.setEmpsal(45000);

tus neeg saib xyuas.getTransaction().yoojyim();

// tom qab kho yus

System.out.println(EmpObj);

tus neeg saib xyuas...();

kaw.dhia();

}

}

[/chaws]








Qhia 3: Qhov no yog tus neeg ua hauj lwm kwv tij neej tsa hoob kawm

[chaws]

pob khoom techalpine.jpa.com;

chaw nres nkoj javax.persistence.Entence;

import javax.persistence.Generatedue;

import javax.persistence.Generation.Generation;

tseem ceeb javax.persistence.Id;

import javax.persistence.Table;

@Entity

@Table

Pej xeem hoob kawm EmpOj {

@Id

@GeneratedValue(yaam tswv yim = Tiam sis Generation.AUTO)

ntiav;

txheej kauj ruam;

ntiav neeg ua hauj lwm;

ntxhais kauj ruam;

Pej xeem EmpObj(ntxias, hlua kauj ruam, ob npaug, hlua kauj ruam) {

super();

this.empid = empid;

qhov no..empname = empname;

qhov no..empsal = empsal;

qhov no..empdeg = empdege;

}

Pej xeem nyob rau hauv qhov kev pab cuam() {

rov qab mus empid;

}

pej xeem tsis muaj dabtsis setEmpid(ntxias) {

this.empid = empid;

}

Pej xeem string tauEmpname() {

npaj siab rov qab los;

}

pej xeem void setEmpname(hlua kauj ruam) {

qhov no..empname = empname;

}

Pej xeem coj tau() {

rov qab los;

}

pej xeem tsis txhob setEmpsal(ob npaug) {

qhov no..empsal = empsal;

}

Pej xeem txoj hlua kauj ruam() {

rov qab los;

}

Pej xeem tsis txhob setEmpeg(hlua kauj ruam) {

qhov no..empdeg = empdege;

}

Pej xeem EmpObj() {

super();

}

@Override

Pej xeem stringing torsting() {

rov qab mus “EmpOjee [Id= id=” + empid + “, Npe=” + empname + “, Nyiaj them xyaum ua hauj lwm ib yam nkaus” + ntxias

+ “, cim xeeb ceem.” + lav lus + “]”;

}

}

[/chaws]

Qhia 4: Qhov no yog cov persistence XML rau mapping

[chaws]

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

<persistence version=”2.0″ xmlns =”http://java.sun.com/xml/ns/persistence”

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

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

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd”>

<pab neeg-tsev npe=”JPADemop” muas-hom kev sib txuas lus =”RESOURCE_LOCAL”>

<hoob>techalpine.jpa.com.EmpObj</hoob>

<khoom>

<lub npe ntawm tus kheej =”javax.persistence.jdbc.url” tus nqi =”jdbc:mysql://localhost:3306/jpapD”/>

<lub npe ntawm tus kheej =”javax.persistence.jdbc.user” tus nqi =”hauv paus”/>

<lub npe ntawm tus kheej =”javax.persistence.jdbc.password” tus nqi =”hauv paus”/>

<lub npe ntawm tus kheej =”javax.persistence.jdbc.dbc.dbc.dbc.” tus nqi =”com.mysql.jdbc.dbc.driver”/>

<lub npe ntawm tus kheej =”eclipsink.logging.level” tus nqi =”Nplua”/>

<lub npe ntawm tus kheej =”eclipselink.ddl-tiam” tus nqi =”ntxhuav”/>

</khoom>

</sib sau ua ke>

</ua phem>

[/chaws]

Ua ntej execute lub CreateEmpObj.Java hoob kawm los tsim cov neeg ua hauj lwm kwv yees. Tom qab no, Execute tus updateEmpob.Java hoob kawm thiab nws yuav xub sau tus thawj qhov tseem ceeb thiab ces qhia qhov tseem ceeb tshiab.

Tso zis ua ntej muab kho:

Id : 111

Lub npe: Siav

Nyiaj them: 30000

dev: Engineer (Engineer)

Tso zis:

Id : 111

Lub npe: Siav

Nyiaj them: 45000

dev: Engineer (Engineer)








Xaus:

JPA yog ib qhov zoo tshaj plaws APIs rau kev loj hlob Java. Txawm muaj ntau txoj kev mus rau persistence programming, Qhov no yog qhov zoo tshaj plaws ntawm cov developers vim nws zoo kawg thiab txhim kho tau dua lwm cov specifications. Qhov yuav siv tau yog yooj yim rau kev kawm. Nyob rau hauv no tutorial, Peb twb sim piav tag nrho cov lus nyob rau hauv cov kauj ruam yooj yim. Vam tias nws yuav pab tus developers los siv JPA yooj yim.


============================================= ============================================== 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