logo

Spring Boot JPA

Kas yra JPA?

Spring Boot JPA yra „Java“ specifikacija, skirta valdyti santykinis duomenis Java programose. Tai leidžia mums pasiekti ir išlaikyti duomenis tarp Java objekto / klasės ir reliacinės duomenų bazės. JPA seka toliau Objektų ir santykių atvaizdavimas (ORM). Tai sąsajų rinkinys. Tai taip pat suteikia vykdymo laiką EntityManager API, skirta duomenų užklausoms ir objektų operacijoms apdoroti pagal duomenų bazę. Ji naudoja nuo platformos nepriklausomą objektinę užklausų kalbą JPQL (Java Persistent Query Language).

Kalbant apie atkaklumą, jis apima tris sritis:

  • „Java Persistence“ API
  • Objektinis-santykinismetaduomenys
  • Pati API, apibrėžta atkaklumas paketą

JPA nėra sistema. Tai apibrėžia koncepciją, kurią gali įgyvendinti bet kokia sistema.

Kodėl turėtume naudoti JPA?

JPA yra paprastesnis, švaresnis ir mažiau darbo reikalaujantis nei JDBC, SQL ir ranka parašytas žemėlapių sudarymas. JPA tinka ne našumui orientuotoms sudėtingoms programoms. Pagrindinis JPA pranašumas, palyginti su JDBC, yra tas, kad JPA duomenys atvaizduojami objektais ir klasėmis, o JDBC duomenys yra pateikiami lentelėmis ir įrašais. Jis naudoja POJO, kad pateiktų nuolatinius duomenis, kurie supaprastina duomenų bazės programavimą. Yra ir kitų JPA privalumų:

Parsisiųsti youtube video vlc
  • JPA vengia rašyti DDL duomenų bazei būdingu SQL dialektu. Vietoj to, jis leidžia susieti XML formatu arba naudoti „Java“ komentarus.
  • JPA leidžia mums nerašyti DML duomenų bazei būdingu SQL dialektu.
  • JPA leidžia mums išsaugoti ir įkelti Java objektus ir grafikus be jokios DML kalbos.
  • Kai mums reikia atlikti JPQL užklausas, tai leidžia mums išreikšti užklausas Java subjektais, o ne (vietine) SQL lentele ir stulpeliais.

JPA ypatybės

Yra šios JPA funkcijos:

  • Tai galinga saugykla ir paprotys objektų kartografavimo abstrakcija.
  • Tai palaiko už atkaklumas tarp parduotuvių . Tai reiškia, kad objektas gali būti iš dalies saugomas MySQL ir Neo4j (Graph Database Management System).
  • Jis dinamiškai generuoja užklausas iš užklausų metodų pavadinimo.
  • Domeno bazinės klasės suteikia pagrindines savybes.
  • Tai palaiko skaidrų auditą.
  • Galimybė integruoti pasirinktinį saugyklos kodą.
  • Tai lengva integruoti su Spring Framework naudojant tinkintą vardų erdvę.

JPA architektūra

JPA yra šaltinis, kuriame verslo subjektai saugomi kaip santykiniai subjektai. Tai parodo, kaip apibrėžti POJO kaip objektą ir kaip valdyti objektus su ryšiu.

Toliau pateiktame paveikslėlyje aprašoma JPA klasės lygio architektūra, kurioje aprašomos pagrindinės JPA klasės ir sąsajos, apibrėžtos javax atkaklumas paketą. JPA architektūrą sudaro šie vienetai:

    Patvarumas:Tai klasė, kurioje yra statinių metodų EntityManagerFactory egzemplioriui gauti.EntityManagerFactory:Tai gamyklinė „EntityManager“ klasė. Jis sukuria ir tvarko kelis EntityManager egzempliorius.EntityManager:Tai sąsaja. Jis kontroliuoja objektų patvarumo operacijas. Tai veikia užklausos egzemplioriui.Subjektas:Objektai yra patvarumo objektai, saugomi kaip įrašas duomenų bazėje.Patvarumo vienetas:Jis apibrėžia visų objektų klasių rinkinį. Programoje „EntityManager“ egzemplioriai ją valdo. Objektų klasių rinkinys reiškia duomenis, esančius vienoje duomenų saugykloje.EntityTransaction:Tai turi vienas prieš vieną ryšį su EntityManager klase. Kiekvienos „EntityManager“ operacijos yra prižiūrimos „EntityTransaction“ klasės.Užklausa:Tai sąsaja, kurią įdiegia kiekvienas JPA pardavėjas, kad gautų kriterijus atitinkančius santykių objektus.
Spring Boot jpa

JPA klasės santykiai

Aukščiau aptartos klasės ir sąsajos palaiko ryšį. Toliau pateiktame paveikslėlyje parodytas ryšys tarp klasių ir sąsajų.

Spring Boot jpa
  • Ryšys tarp EntityManager ir EntiyTransaction yra vienas prieš vieną . Kiekvienai EntityManager operacijai yra EntityTransaction egzempliorius.
  • „EntityManageFactory“ ir „EntiyManager“ ryšys yra toks vienas prieš daugelį . Tai gamyklinė EntityManager egzemplioriaus klasė.
  • Ryšys tarp EntityManager ir Query yra vienas prieš daugelį . Naudodami EntityManager klasės egzempliorių galime vykdyti bet kokį užklausų skaičių.
  • Ryšys tarp EntityManager ir Entity yra vienas prieš daugelį . „EntityManager“ egzempliorius gali valdyti kelis objektus.

JPA įgyvendinimas

JPA yra atvirojo kodo API. Yra įvairių įmonių pardavėjų, tokių kaip „Eclipse“, „RedHat“, „Oracle“ ir kt., kurie teikia naujus produktus, įtraukdami į juos JPA. Yra keletas populiarių JPA diegimo sistemų, tokių kaip Hibernate, EclipseLink, DataNucleus, ir tt Jis taip pat žinomas kaip Objektų ir santykių atvaizdavimas (ORM) įrankis.

Objektų santykių atvaizdavimas (ORM)

ORM vadinamas Java objektų susiejimas su duomenų bazių lentelėmis ir atvirkščiai Objektų ir santykių atvaizdavimas. ORM atvaizdavimas veikia kaip tiltas tarp a reliacinė duomenų bazė (lentelės ir įrašai) ir Java programa (klasės ir objektai).

Toliau pateiktame paveikslėlyje ORM sluoksnis yra adapterio sluoksnis. Jis pritaiko objektų grafikų kalbą prie SQL ir ryšių lentelių kalbos.

Spring Boot jpa

Tarp programos ir duomenų bazės yra ORM sluoksnis. Jis konvertuoja „Java“ klases ir objektus, kad juos būtų galima saugoti ir valdyti reliacinėje duomenų bazėje. Pagal numatytuosius nustatymus išliekantis pavadinimas tampa lentelės pavadinimu, o laukai – stulpeliais. Kai programa nustatoma, kiekviena lentelės eilutė atitinka objektą.

JPA versijos

Ankstesnėse EJB versijose apibrėžiamas patvarumo sluoksnis kartu su verslo logikos sluoksniu javax.ejb.EntityBean Sąsaja. EJB specifikacija apima JPA apibrėžimą.

Pristatant EJB 3.0, patvarumo sluoksnis buvo atskirtas ir nurodytas kaip JPA 1.0 (Java Persistence API). Šios API specifikacijos buvo išleistos kartu su JAVA EE5 specifikacijomis 2006 m. gegužės 11 d., naudojant JSR 220.

2019 m. JPA pervadinta į Džakartos atkaklumas . Naujausia JPA versija yra 2.2 . Jis palaiko šias funkcijas:

  • Java 8, duomenų ir laiko API
  • CDI įpurškimas „AttributeConvertes“.
  • Tai daro komentarus @Pakartojamus

Skirtumas tarp JPA ir Hibernate

JPA: JPA yra „Java“ specifikacija, naudojama pasiekti, valdyti ir išlaikyti duomenis tarp „Java“ objekto ir reliacinės duomenų bazės. Tai standartinis ORM metodas.

Hibernate: Tai lengvas atvirojo kodo ORM įrankis, naudojamas Java objektams saugoti reliacinėje duomenų bazių sistemoje. Tai JPA teikėjas. Jame laikomasi bendro JPA pateikto požiūrio.

Šioje lentelėje aprašomi JPA ir Hibernate skirtumai.

JPA Užmigti
JPA yra a Java specifikacija ryšių duomenų atvaizdavimui Java programoje. Hibernate yra ORM sistema kuris susijęs su duomenų patvarumu.
JPA nenumato jokių įgyvendinimo klasių. Jame pateikiamos įgyvendinimo klasės.
Ji naudoja nuo platformos nepriklausomą užklausų kalbą, vadinamą JPQL („Java Persistence Query Language“). Ji naudoja savo užklausų kalbą, vadinamą HQL (Hibernate Query Language).
Jis apibrėžtas javax.patvarumas paketą. Jis apibrėžtas org.hibernate paketą.
Jis įgyvendinamas įvairiuose ORM įrankiuose, pvz Hibernate, EclipseLink, ir tt Hibernate yra teikėjas PSD.
JPA naudoja EntityManager už duomenų patvarumo tvarkymą. Naudojamas užmigdymo režimu Sesija už duomenų patvarumo tvarkymą.

Spring Boot Starter Data JPA

„Spring Boot“ suteikia starterio priklausomybę spring-boot-starter-data-jpa efektyviai sujungti „Spring Boot“ programą su reliacine duomenų baze. Spring-boot-starter-data-jpa viduje naudoja spring-boot-jpa priklausomybę.

 org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE 

Spring Boot JPA pavyzdys

Sukurkime „Spring Boot“ programą, kuri naudoja JPA prisijungimui prie duomenų bazės. Šiame pavyzdyje naudojome atminties duomenų bazę „Apache“ derbis.

kaip rasti užblokuotus numerius android

Apache derbis: Tai yra atvirojo kodo, įterptieji Reliacinė duomenų bazė visiškai įdiegta Java. Jį galima įsigyti pagal „Apache“ licenciją 2.0. Yra šie „Apache Derby“ pranašumai:

  • Jį lengva įdiegti, įdiegti ir naudoti.
  • Jis pagrįstas Java, JDBC ir SQL standartais.
  • Jame yra įterptoji JDBC tvarkyklė, leidžianti įterpti „Derby“ į bet kurį „Java“ pagrįstą sprendimą.
  • Jis taip pat palaiko kliento / serverio režimą su Derby Network Client JDBC tvarkykle ir Derby tinklo serveriu.

Spring Boot gali automatiškai sukonfigūruoti įterptąją duomenų bazę, pvz H2, HSQL, ir Derby duomenų bazės . Mums nereikia pateikti jokių ryšio URL. Turime įtraukti tik kūrimo priklausomybę nuo įterptosios duomenų bazės, kurią norime naudoti.

„Spring Boot“ galime lengvai integruoti „Apache Derby“ duomenų bazę tiesiog pridėdami Derbis priklausomybė pom.xml faile.

 org.apache.derby derby runtime 

1 žingsnis: Atidarykite pavasario inicijavimą https://start.spring.io/ .

2 žingsnis: Pasirinkite naujausią „Spring Boot“ versiją 2.3.0 (SNAPSHOT)

3 veiksmas: Pateikite Grupė vardas. Mes pateikėme com.javatpoint.

4 veiksmas: Pateikite Artefaktas Id. Mes pateikėme apache-derby-pavyzdys .

5 veiksmas: Pridėkite priklausomybes: Spring Web, Spring Data JPA, ir Apache Derby duomenų bazė .

kaip konvertuoti int į java eilutę

6 veiksmas: Spustelėkite ant Generuoti mygtuką. Kai spustelėjame mygtuką Generuoti, projektas įvyniojamas į Jar failą ir atsisiunčiamas į vietinę sistemą.

Spring Boot jpa

7 veiksmas: ištraukite Jar failą ir įklijuokite jį į STS darbo sritį.

8 veiksmas: importuokite projekto aplanką į STS.

Failas -> Importuoti -> Esami Maven projektai -> Naršyti -> Pasirinkite aplanką apache-derby-example -> Baigti

Importuoti reikia šiek tiek laiko.

9 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.model aplanke src/main/java.

10 veiksmas: Sukurkite klasę pavadinimu UserRecord pakuotėje com.javatpoint.model ir atlikite šiuos veiksmus:

  • Apibrėžkite tris kintamuosius ID, vardas, ir paštu .
  • Generuokite geterius ir seterius.
    Dešiniuoju pelės mygtuku spustelėkite failą -> Šaltinis -> Generuoti Getters ir Nustatytojus
  • Apibrėžkite numatytąjį konstruktorių.
  • Pažymėkite klasę kaip an Esybė naudojant anotaciją @Subjektas.
  • ženklas Id kaip pirminį raktą, naudojant anotaciją @Id.

UserRecord.java

 package com.javatpoint.model; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class UserRecord { @Id private int id; private String name; private String email; //default conatructor public UserRecord() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

11 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.controller aplanke src/main/java.

12 veiksmas: Sukurkite valdiklio klasę pavadinimu UserController pakuotėje com.javatpoint.controller ir atlikite šiuos veiksmus:

  • Pažymėkite klasę kaip valdiklį naudodami anotaciją @RestController.
  • Automatiškai sujungė klasę Vartotojo paslauga naudojant anotaciją @Autowired .
  • Apibrėžėme du atvaizdus, ​​vieną skirtą gauti visus vartotojus o kitas už pridėti vartotoją.

UserController.java

pasirinkti kaip
 package com.javatpoint.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.UserRecord; import com.javatpoint.service.UserService; import java.util.List; @RestController public class UserController { @Autowired private UserService userService; @RequestMapping('/') public List getAllUser() { return userService.getAllUsers(); } @RequestMapping(value='/add-user', method=RequestMethod.POST) public void addUser(@RequestBody UserRecord userRecord) { userService.addUser(userRecord); } } 

13 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.service aplanke src/main/java.

14 veiksmas: Sukurkite paslaugų klasę su pavadinimu Vartotojo paslauga pakuotėje com.javatpoint.service ir atlikite šiuos veiksmus:

  • Pažymėkite klasę kaip paslaugą naudodami anotaciją @Paslauga.
  • Automatiškai prijungtas UserRepository
  • Apibrėžkite metodą getAllUsers () kuris grąžina sąrašą
  • Apibrėžkite kitą metodo pavadinimą addUser() kuri išsaugo vartotojo įrašą.

UserService.java

 package com.javatpoint.service; import java.util.List; import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.UserRecord; import com.javatpoint.repository.UserRepository; @Service public class UserService { @Autowired private UserRepository userRepository; public List getAllUsers() { ListuserRecords = new ArrayList(); userRepository.findAll().forEach(userRecords::add); return userRecords; } public void addUser(UserRecord userRecord) { userRepository.save(userRecord); } } 

15 veiksmas: Sukurkite paketą su pavadinimu com.javatpoint.repository aplanke src/main/java.

16 veiksmas: Sukurkite saugyklos sąsają pavadinimu UserRepository pakuotėje com.javatpoint.repository ir tęsiasi CrudRepository .

UserRepository.java

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.UserRecord; public interface UserRepository extends CrudRepository { } 

17 veiksmas: Dabar atidarykite ApacheDerbyExampleApplication.java failą. Jis sukurtas pagal numatytuosius nustatymus, kai nustatome programą.

ApacheDerbyExampleApplication.java

kartoti per žemėlapį java
 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ApacheDerbyExampleApplication { public static void main(String[] args) { SpringApplication.run(ApacheDerbyExampleApplication.class, args); } } 

Dabar esame sukūrę visas reikalingas klases ir paketus pagal reikalavimus. Atkreipkite dėmesį, kad mes jų nepateikėme ryšio URL duomenų bazei. Atlikus visus aukščiau nurodytus veiksmus, projekto katalogas atrodo taip:

Spring Boot jpa

Paleiskite programą.

18 veiksmas: Atidaryk ApacheDerbyExampleApplication.java failą ir paleiskite jį kaip „Java“ programą.

19 veiksmas: Atidarykite naršyklę ir iškvieskite URL http://localhost:8080/. Pateikiamas tuščias sąrašas, nes į sąrašą neįtraukėme jokio vartotojo.

Norėdami įtraukti vartotoją į duomenų bazę, išsiųsime a PAST prašyti naudojant Paštininkas .

20 veiksmas: Atidaryk Paštininkas ir atlikite šiuos veiksmus:

  • Pasirinkite PAST
  • Iškvieskite URL http://localhost:8080/add-user.
  • Spustelėkite ant kūnas
  • Pasirinkite Turinio tipas kaip JSON (programa/json).
  • Įveskite duomenis, kuriuos norite įterpti į duomenų bazę. Įdėjome šiuos duomenis:
 { 'id': '001', 'name': 'Tom', 'email': '[email protected]' } 
  • Spustelėkite ant Siųsti mygtuką.
Spring Boot jpa

Kai paspaudžiame mygtuką Siųsti, jis parodomas Būsena: 200 Gerai . Tai reiškia, kad užklausa buvo sėkmingai įvykdyta.

21 veiksmas: Atidarykite naršyklę ir iškvieskite URL http://localhost:8080. Jis grąžina vartotoją, kurį įtraukėme į duomenų bazę.

Spring Boot jpa
Atsisiųskite „Apache derby“ projekto pavyzdį