den blandede parlamentariske forsamling jpql

, dette kapitel fortæller dig om jpql, og hvordan det fungerer, med vedholdenhed enheder.i dette kapitel, kan følge samme pakke hierarki, som vi brugte i det foregående kapitel som følger:,, java persistens query language, jpql er java persistens query language defineret i den blandede parlamentariske forsamling specifikation.det anvendes til at skabe forespørgsler mod enheder, opbevares i en relationel database.jpql er udviklet på grundlag af sql syntaks.men det vil ikke påvirke den database, direkte. jpql kan hente oplysninger eller data ved at udvælge klausul kan bulk opdateringer med opdatering klausul og slette klausul.entitymanager. createquery() api - vil støtte være sprog., søge i struktur, jpql syntaks er meget lig det syntaks for sql.under sql som syntaks er en fordel for sql er en simpel structured query language og mange entreprenører bruger det i ansøgningerne.sql arbejder direkte mod relationel database, tabeller, registre og områder, der jpql arbejder med java klasser og tilfælde. for eksempel en jpql forespørgsel kan hente en virksomhed objekt i stedet for område resultat fra databasen, som med sql.den jpql forespørgsel struktur som følger. vælg.fra...[...] [gruppe af...[...]] [ordre fra...], strukturen i jpql slette og ajourføre forespørgsler er enklere, som følger, ikke...[...] opdatering...sæt...[...] scalar og samlede funktioner, scalar funktioner afkast deraf følgende værdier baseret på input - værdier.samlede funktioner tilbage de værdier ved at beregne tilførslen af værdier. følger samme eksempel personaleforvaltning, der anvendes i de foregående kapitler.her skal vi gå gennem tjenesten klasser med scalar og samlede funktioner af jpql., så lad os antage den jpadb.employee tabel indeholder følgende records, eid ename løn grader. 1201 gopal 40000 tekniske direktør 1202 manisha 40000 korrekturlæsere 1203 masthanvali 40000 tekniske forfatter 1204 satish 30000 tekniske forfatter 1205 krishna 30000 tekniske forfatter 1206 kiran 35000 korrekturlæsere, skabe en klasse, der hedder, scalarandaggregatefunctions.java under, com.tutorialspoint.eclipselink.service, pakke som følger:, pakke com.tutorialspoint.eclipselink.service; import java.util.list; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; import javax.persistence. søgning; offentlige klasse scalarandaggregatefunctions {offentlige statisk tomrum vigtigste (string [] args) (entitymanagerfactory emfactory = vedholdenhed. createentitymanagerfactory ("eclipselink_jpa"); entitymanager entitymanager = emfactory. createentitymanager(); //skalær forespørgsel spørgsmål = entitymanager.createquery ("vælg øvre (e.ename) fra arbejdstager e"); listen < snor > liste = forespørgsel. getresultlist(); (serie e: liste) (system. println ("arbejdstagerens navn:" + e)} //samlede funktion forespørgsel query1 = entitymanager. createquery ("vælg max (e.salary) fra arbejdstager e"); dobbeltresultat = (dobbelt) query1. getsingleresult(); system. println ("max ansattes løn:" + resultat)}} efter udarbejdelsen og gennemførelsen af ovennævnte program, du vil få produktionen i konsol panel af formørkelse ide, ansat som følger: navn: gopal arbejdstagerens navn: manisha arbejdstagerens navn: masthanvali arbejdstagerens navn: satish arbejdstagerens navn: krishna arbejdstagerens navn: kiran økse ansattes løn: 40000.0 mellem, og somnøgleord,'between "," og ", og som er den vigtigste nøgleord jpql.disse stikord anvendes efter, hvor bestemmelse i en forespørgsel, skabe en klasse, der hedder, betweenandlikefunctions.java under, com.tutorialspoint.eclipselink.service, pakke som følger:, pakke com.tutorialspoint.eclipselink.service; import java.util.list; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; import javax.persistence.query; import com.tutorialspoint.eclipselink.entity.employee; offentlige klasse betweenandlikefunctions {offentlige statisk tomrum vigtigste (string [] args) (entitymanagerfactory emfactory = vedholdenhed. createentitymanagerfactory ("eclipselink_jpa"); entitymanager entitymanager = emfactory. createentitymanager(); //mellem query query = entitymanager.createQuery( "Select e " + "from Employee e " + "where e.salary " + "Between 30000 and 40000" ); List<Employee> list=(List<Employee>)query.getResultList( ); for( Employee e:list ){ System.out.print("Employee ID :" + e.getEid( )); System.out.println("\\t Employee salary :" + e.getSalary( )); } //Like Query query1 = entitymanager.createQuery("Select e " + "from Employee e " + "where e.ename LIKE 'M%'"); List<Employee> list1=(List<Employee>)query1.getResultList( ); for( Employee e:list1 ) { System.out.print("Employee ID :"+e.getEid( )); System.out.println("\\t Employee name :"+e.getEname( )); }}} efter udarbejdelsen og gennemførelsen af ovennævnte program, du vil få produktionen i konsol panel af en ide som følger:, medarbejder - id: 1201 ansattes løn: 40000.0 medarbejder - id: 1202 ansattes løn: 40000.0 medarbejder - id: 1203 ansattes løn: 40000.0 medarbejder - id: 1204 ansattes løn: 30000.0 1205 ansat medarbejder - id: løn: 30000.0 medarbejder - id: 1206 ansattes løn: 35000.0 medarbejder - id: 1202 arbejdstagerens navn: manisha medarbejder - id: 1203 arbejdstagerens navn: masthanvali, beordre, at registreringer i jpql vi brug for af - klausulen.anvendelsen af denne klausul er den samme som brug i sql, men det drejer sig om enheder.med henblik på f.eks. skabe en klasse ordering.java under, com.tutorialspoint.eclipselink.service, pakke som følger:, pakke com.tutorialspoint.eclipselink.service; import java.util.list; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; import javax.persistence.query; import com.tutorialspoint.eclipselink.entity.employee; offentlige klasse bestilling (offentlige statisk tomrum vigtigste (string [] args) (entitymanagerfactory emfactory = vedholdenhed. createentitymanagerfactory ("eclipselink_jpa"); entitymanager entitymanager = emfactory. createentitymanager(); //mellem forespørgsel spørgsmål = entitymanager. createquery ("vælg e" + "fra arbejdsgivere "+", for e.ename asc); listen < ansat > liste = (liste < ansat >) spørgsmål. getresultlist () til (ansat e: liste) (system. tryk ("medarbejder - id:" + e.geteid ()); system. println ("ikke ansat navn:" + e.getename ()}}} efter udarbejdelsen og gennemførelsen af ovennævnte program, du vil få produktionen i konsol panel af en ide som følger:, medarbejder - id: 1201 arbejdstagerens navn: gopal medarbejder - id: 1206 arbejdstagerens navn: kiran medarbejder - id: 1205 arbejdstagerens navn: krishna medarbejder - id: 1202 arbejdstagerens navn: manisha medarbejder - id: 1203 arbejdstagerens navn: masthanvali medarbejder - id: 1204 arbejdstagerens navn: satish, der hedder forespørgsler, en @ namedquery anmærkning er defineret som et spørgsmål med en på forhånd fastlagt unchangekan du snor.i stedet for dynamiske søgninger, anvendelse af nævnte spørgsmål kan forbedre kode organisation ved at adskille jpql forespørgsel tråde fra pojo.desuden går forespørgslen parametre i stedet for indarbejdelse literals dynamisk i forespørgslen snor og medfører en mere effektiv spørgsmål. først og fremmest tilføje @ namedquery anmærkning til de ansattes enhed klasse, der hedder, employee.java under, com.tutorialspoint.eclipselink.entity, pakke som følger:, pakke com.tutorialspoint.eclipselink.entity; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.namedquery; import javax.persistence.table; @ enhed @ tabel @ namedquery (spørgsmål = "vælg e fra arbejdstager e, hvor e.eid =: id", "find ansat ved navn = id) offentlige klasse lønmodtager {@ id @ generatedvalue (strategi = generationtype.auto) private int eid; private snor ename; private dobbelt løn; private snor grader, offentlig ansat (int eid, snor ename, dobbelt løn, snor grader) (super); this.eid = fedevarer; this.ename = ename; this.salary = løn; this.deg = grader.} offentligt ansat () (super();} offentlige int geteid () (tilbagevenden eid;} offentlige tomrum seteid int (eid) (this.eid = fedevarer;} offentlige snor getename () (tilbage ename;} offentlige tomrum setename (string - ename) (this.ename = ename;} offentlige dobbelt getsalary () (tilbagevenden løn;} offentlige tomrum setsalary (dobbelt løn) (this.salary = løn;} offentlige snorgetdeg () (tilbagevenden grader.} offentlige tomrum setdeg (string grader) (this.deg = grader.} @ tilsidesætte offentlige snor tostring() {tilbage "ansat [eid =" + eid + ", ename =" + ename + "løn =" + løn + ", grader =" + grader + ".";), skabe en klasse, der hedder, namedqueries.java under, com.tutorialspoint.eclipselink.service, pakke som følger:, pakke com.tutorialspoint.eclipselink.service; import java.util.list; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; import javax.persistence.query; import com.tutorialspoint.eclipselink.entity.employee; offentlige klasse namedqueries {offentlige statisk tomrum vigtigste (string [] args) (entitymanagerfactory emfactory = vedholdenhed. createentitymanagerfactory ("eclipselink_jpa"); entitymanager entitymanager = emfactory. createentitymanager(); forespørgsel spørgsmål = entitymanager. createnamedquery ("finde ansat af id"); spørgsmål. setparameter ("id", 1204); listen < ansat > liste = forespørgsel. getresultlist () til (ansat e: liste) (system. tryk ("medarbejder - id:" + e.geteid () system. println ("ikke ansat navn:" + e.getename ()}}} efter udarbejdelsen og gennemførelsen af ovennævnte program, du vil få produktionen i konsol panel af formørkelse ide som følger:, medarbejder - id: 1204 arbejdstagerens navn: satish, efter at alle de ovennævnte klasser pakken hierarki er vist som follonb:,, ivrige og dovne lastning, det vigtigste aspekt af den blandede parlamentariske forsamling, er at kopiere det eksemplar af databasen i cache - lager.mens transaktioner med den database, for det første vil det virkning på kopiere data og kun, når det er udført ved hjælp af enhed forvalter de ændringer, der er foretaget i den database, der er to måder, hvorpå man kan hente oplysninger fra databasen - ivrig efter at hente og dovne apport., ivrig, hent, henter hele rekord, samtidig med at finde den rekord med primære nøgle., dovne hente det kontrol for tilstedeværelsen af meddeler det med primære nøgle, hvis det eksisterer.senere, hvis du kalder nogen af albuer metode i virksomheden, så henter det hele. doven, men hent er mulig, når du prøver at hente det for første gang.på den måde, en kopi af det hele er allerede er lagret i cache - lager.ydeevne klogt, dovne hente er at foretrække.

JPA JPQL
Package Hierarchy



Previous:
Next Page: