logo

Spring Boot JPA

Mikä on JPA?

Spring Boot JPA on Java-spesifikaatio hallintaan suhteellinen tietoja Java-sovelluksissa. Sen avulla voimme käyttää ja säilyttää tietoja Java-objektin/luokan ja relaatiotietokannan välillä. JPA seuraa Objekti-relaatiokartoitus (ORM). Se on joukko rajapintoja. Se tarjoaa myös suoritusajan EntityManager API kyselyjen ja tapahtumien käsittelemiseen objekteissa tietokantaa vastaan. Se käyttää alustasta riippumatonta oliopohjaista kyselykieltä JPQL (Java Persistent Query Language).

Pysymisen yhteydessä se kattaa kolme aluetta:

  • Java Persistence API
  • Objekti-relaatiometatiedot
  • Itse API, joka on määritelty kohdassa sitkeys paketti

JPA ei ole kehys. Se määrittelee konseptin, joka voidaan toteuttaa millä tahansa viitekehyksellä.

Miksi meidän pitäisi käyttää JPA:ta?

JPA on yksinkertaisempi, puhtaampi ja vähemmän työvoimavaltainen kuin JDBC, SQL ja käsin kirjoitettu kartoitus. JPA soveltuu ei-suorituskykyisiin monimutkaisiin sovelluksiin. JPA:n tärkein etu JDBC:hen verrattuna on se, että JPA:ssa dataa edustavat objektit ja luokat, kun taas JDBC:ssä dataa edustavat taulukot ja tietueet. Se käyttää POJOa edustamaan pysyvää dataa, mikä yksinkertaistaa tietokantaohjelmointia. JPA:lla on joitain muita etuja:

  • JPA välttää DDL:n kirjoittamista tietokantakohtaisella SQL-murteella. Sen sijaan se mahdollistaa kartoituksen XML-muodossa tai Java-merkintöjen käytön.
  • JPA mahdollistaa DML:n kirjoittamisen SQL:n tietokantakohtaisella murteella.
  • JPA:n avulla voimme tallentaa ja ladata Java-objekteja ja -kaavioita ilman DML-kieltä.
  • Kun meidän on suoritettava kyselyitä JPQL, sen avulla voimme ilmaista kyselyt Java-entiteeteinä (natiivi) SQL-taulukon ja -sarakkeiden sijaan.

JPA:n ominaisuudet

JPA:ssa on seuraavat ominaisuudet:

  • Se on tehokas arkisto ja mukautettu objektikartoituksen abstraktio.
  • Se tukee kauppojen välinen pysyvyys . Se tarkoittaa, että kokonaisuus voidaan tallentaa osittain MySQL:ään ja Neo4j:hen (Graph Database Management System).
  • Se luo dynaamisesti kyselyjä kyselymenetelmien nimistä.
  • Verkkoalueen perusluokat tarjoavat perusominaisuudet.
  • Se tukee läpinäkyvää auditointia.
  • Mahdollisuus integroida mukautettu arkistokoodi.
  • Se on helppo integroida Spring Frameworkiin mukautetulla nimiavaruudella.

JPA:n arkkitehtuuri

JPA on lähde liikekokonaisuuksien tallentamiseen relaatiokokonaisuuksina. Se näyttää, kuinka POJO määritellään kokonaisuudeksi ja kuinka kokonaisuuksia hallinnoidaan suhteessa.

kettu vs susi

Seuraava kuva kuvaa JPA:n luokkatason arkkitehtuuria, joka kuvaa JPA:n ydinluokat ja rajapinnat, jotka on määritelty javax pysyvyys paketti. JPA-arkkitehtuuri sisältää seuraavat yksiköt:

    Sitkeys:Se on luokka, joka sisältää staattisia menetelmiä EntityManagerFactory-ilmentymän hankkimiseksi.EntityManagerFactory:Se on EntityManagerin tehdasluokka. Se luo ja hallitsee useita EntityManagerin esiintymiä.EntityManager:Se on käyttöliittymä. Se ohjaa objektien pysyvyystoimintoja. Se toimii Query-esiintymässä.Entiteetti:Entiteetit ovat pysyvyysobjekteja, jotka tallennetaan tietueina tietokantaan.Pysyvyysyksikkö:Se määrittää joukon kaikkia entiteettiluokkia. Sovelluksessa EntityManager-esiintymät hallitsevat sitä. Entiteettiluokkien joukko edustaa yhden tietovaraston sisältämää dataa.EntityTransaction:Sillä on Yksi yhteen suhde EntityManager-luokkaan. Jokaisen EntityManagerin toimintoja ylläpitää EntityTransaction-luokka.Kysely:Se on käyttöliittymä, jonka jokainen JPA-toimittaja ottaa käyttöön kriteerit täyttävien relaatioobjektien hankkimiseksi.
Spring Boot jpa

JPA:n luokkasuhteet

Luokat ja rajapinnat, joista olemme keskustelleet edellä, ylläpitävät suhdetta. Seuraavassa kuvassa näkyy luokkien ja rajapintojen välinen suhde.

Spring Boot jpa
  • EntityManagerin ja EntiyTransactionin välinen suhde on Yksi yhteen . Jokaiselle EntityManager-toiminnolle on olemassa EntityTransaction-esiintymä.
  • EntityManageFactoryn ja EntiyManagerin välinen suhde on yksi moniin . Se on EntityManager-esiintymän tehdasluokka.
  • EntityManagerin ja Queryn välinen suhde on yksi moniin . Voimme suorittaa minkä tahansa määrän kyselyjä käyttämällä EntityManager-luokan esiintymää.
  • EntityManagerin ja Entityn välinen suhde on yksi moniin . EntityManager-ilmentymä voi hallita useita entiteettejä.

JPA:n toteutukset

JPA on avoimen lähdekoodin API. On olemassa useita yrityksiä, kuten Eclipse, RedHat, Oracle jne., jotka tarjoavat uusia tuotteita lisäämällä niihin JPA:n. On olemassa joitain suosittuja JPA-toteutuskehyksiä, kuten Hibernate, EclipseLink, DataNucleus, jne. Se tunnetaan myös nimellä Objekti-relaatiokartoitus (ORM) työkalu.

Objekti-relaatiokartoitus (ORM)

ORM:ssa kutsutaan Java-objektien yhdistämistä tietokantataulukoihin ja päinvastoin Objekti-relaatiokartoitus. ORM-kartoitus toimii siltana a relaatiotietokanta (taulukot ja tietueet) ja Java-sovellus (luokat ja objektit).

Seuraavassa kuvassa ORM-kerros on sovitinkerros. Se mukauttaa objektigraafien kielen SQL- ja relaatiotaulukoiden kieleen.

Spring Boot jpa

ORM-kerros on sovelluksen ja tietokannan välillä. Se muuntaa Java-luokat ja objektit niin, että niitä voidaan tallentaa ja hallita relaatiotietokantaan. Oletusarvoisesti säilyvästä nimestä tulee taulukon nimi ja kentistä tulee sarakkeita. Kun sovellus on määritetty, jokainen taulukon rivi vastaa objektia.

JPA:n versiot

EJB:n aikaisemmat versiot määrittelevät pysyvyyskerroksen yhdistettynä liiketoimintalogiikkakerrokseen javax.ejb.EntityBean Käyttöliittymä. EJB-spesifikaatio sisältää JPA:n määritelmän.

Kun EJB 3.0 esiteltiin, pysyvyyskerros erotettiin ja määriteltiin JPA 1.0:ksi (Java Persistence API). Tämän API:n tekniset tiedot julkaistiin yhdessä JAVA EE5:n eritelmien kanssa 11. toukokuuta 2006 JSR 220:n avulla.

Vuonna 2019 JPA nimettiin uudelleen Jakarta sinnikkyys . JPA:n uusin versio on 2.2 . Se tukee seuraavia ominaisuuksia:

  • Java 8, data ja aika API
  • CDI-injektio AttributeConvertesissa
  • Se tekee huomautuksista @Toistettavia

Ero JPA:n ja Hibernaten välillä

JPA: JPA on Java-spesifikaatio, jota käytetään Java-objektin ja relaatiotietokannan välisen tiedon käyttämiseen, hallintaan ja säilyttämiseen. Se on ORM:n standardi lähestymistapa.

Lepotila: Se on kevyt, avoimen lähdekoodin ORM-työkalu, jota käytetään Java-objektien tallentamiseen relaatiotietokantajärjestelmään. Se on JPA:n tarjoaja. Siinä noudatetaan parlamentaarisen edustajakokouksen yhteistä lähestymistapaa.

Seuraavassa taulukossa kuvataan erot JPA:n ja Hibernaten välillä.

JPA Lepotila
JPA on a Java-spesifikaatio relaatiotietojen kartoittamiseen Java-sovelluksessa. Hibernate on ORM-kehys joka käsittelee tietojen pysyvyyttä.
JPA ei tarjoa toteutusluokkia. Se tarjoaa toteutusluokkia.
Se käyttää alustasta riippumatonta kyselykieltä nimeltä JPQL (Java Persistence Query Language). Se käyttää omaa kyselykieltä nimeltä HQL (Hibernate Query Language).
Se on määritelty kohdassa javax.persistence paketti. Se on määritelty kohdassa org.hibernate paketti.
Se on toteutettu erilaisissa ORM-työkaluissa, kuten Lepotila, EclipseLink, jne. Hibernate on tarjoaja PSD:stä.
JPA käyttää EntityManager tietojen pysyvyyden käsittelyyn. Lepotilassa käytössä Istunto tietojen pysyvyyden käsittelyyn.

Spring Boot Starter Data JPA

Spring Boot tarjoaa käynnistysriippuvuuden spring-boot-starter-data-jpa yhdistää Spring Boot -sovelluksen relaatiotietokantaan tehokkaasti. Spring-boot-starter-data-jpa käyttää sisäisesti spring-boot-jpa-riippuvuutta.

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

Spring Boot JPA Esimerkki

Luodaan Spring Boot -sovellus, joka käyttää JPA:ta yhteyden muodostamiseen tietokantaan. Seuraavassa esimerkissä olemme käyttäneet muistin sisäistä tietokantaa Apache Derby.

Apache Derby: Se on avoimen lähdekoodin, sulautettu relaatiotietokanta toteutettu kokonaan Javalla. Se on saatavana Apache License 2.0 -lisenssillä. Apache Derbyllä on seuraavat edut:

  • Se on helppo asentaa, ottaa käyttöön ja käyttää.
  • Se perustuu Java-, JDBC- ja SQL-standardeihin.
  • Se tarjoaa sulautetun JDBC-ohjaimen, jonka avulla voimme upottaa Derbyn mihin tahansa Java-pohjaiseen ratkaisuun.
  • Se tukee myös asiakas/palvelintilaa Derby Network Client JDBC -ohjaimella ja Derby Network Serverillä.

Spring Boot voi määrittää automaattisesti sulautetun tietokannan, kuten H2, HSQL, ja Derby-tietokannat . Meidän ei tarvitse antaa yhteys-URL-osoitteita. Tarvitsemme vain koontiriippuvuuden sulautetusta tietokannasta, jota haluamme käyttää.

Spring Bootissa voimme helposti integroida Apache Derby -tietokannan vain lisäämällä Derby riippuvuus pom.xml-tiedostossa.

 org.apache.derby derby runtime 

Vaihe 1: Avaa Spring Initializr https://start.spring.io/ .

Vaihe 2: Valitse Spring Bootin uusin versio 2.3.0 (SNAPSSHOT)

Vaihe 3: Tarjoa Ryhmä nimi. Olemme tarjonneet com.javatpoint.

Vaihe 4: Tarjoa Esine Id. Olemme tarjonneet apache-derby-esimerkki .

Vaihe 5: Lisää riippuvuudet: Spring Web, Spring Data JPA, ja Apache Derby -tietokanta .

Vaihe 6: Klikkaa Tuottaa -painiketta. Kun napsautamme Luo-painiketta, se kääri projektin Jar-tiedostoon ja lataa sen paikalliseen järjestelmään.

Spring Boot jpa

Vaihe 7: Pura Jar-tiedosto ja liitä se STS-työtilaan.

Vaihe 8: Tuo projektikansio STS:ään.

Tiedosto -> Tuo -> Olemassa olevat Maven-projektit -> Selaa -> Valitse kansio apache-derby-example -> Valmis

Tuonti kestää jonkin aikaa.

Vaihe 9: Luo paketti nimellä com.javatpoint.model kansiossa src/main/java.

Vaihe 10: Luo luokka nimellä UserRecord paketissa com.javatpoint.model ja toimi seuraavasti:

  • Määrittele kolme muuttujaa id, nimi, ja sähköposti .
  • Luo Getterit ja setterit.
    Napsauta tiedostoa hiiren kakkospainikkeella -> Source -> Generate Getters and Setters
  • Määritä oletuskonstruktori.
  • Merkitse luokka an Entiteetti käyttämällä huomautusta @Entiteetti.
  • Mark Id ensisijaisena avaimena käyttämällä huomautusta @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; } } 

Vaihe 11: Luo paketti nimellä com.javatpoint.controller kansiossa src/main/java.

Vaihe 12: Luo Controller-luokka nimellä UserController paketissa com.javatpoint.controller ja toimi seuraavasti:

  • Merkitse luokka ohjaimeksi annotaatiolla @RestController.
  • Autowired luokan UserService käyttämällä huomautusta @Autowired .
  • Olemme määrittäneet kaksi kartoitusta, yksi varten saada kaikki käyttäjät ja toinen varten lisää käyttäjä.

UserController.java

 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); } } 

Vaihe 13: Luo paketti nimellä com.javatpoint.service kansiossa src/main/java.

Vaihe 14: Luo palveluluokka nimellä UserService paketissa com.javatpoint.service ja toimi seuraavasti:

  • Merkitse luokka palveluksi huomautuksen avulla @Palvelu.
  • Autowired UserRepository
  • Määrittele menetelmä getAllUsers() joka palauttaa luettelon
  • Määritä toinen menetelmän nimi lisää käyttäjä() joka tallentaa käyttäjätietueen.

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); } } 

Vaihe 15: Luo paketti nimellä com.javatpoint.repository kansiossa src/main/java.

Vaihe 16: Luo arkiston käyttöliittymä nimellä UserRepository paketissa com.javatpoint.repository ja laajenee CrudRepository .

UserRepository.java

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

Vaihe 17: Avaa nyt ApacheDerbyExampleApplication.java tiedosto. Se luotiin oletuksena, kun määritämme sovelluksen.

ApacheDerbyExampleApplication.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); } } 

Nyt olemme pystyttäneet kaikki tarvittavat luokat ja paketit vaatimusten mukaisesti. Huomaa, että emme ole toimittaneet mitään yhteyden URL-osoite tietokantaa varten. Kun olet suorittanut kaikki yllä olevat vaiheet, projektihakemisto näyttää tältä:

Spring Boot jpa

Suoritetaan sovellus.

Vaihe 18: Avaa ApacheDerbyExampleApplication.java tiedosto ja suorita se Java-sovelluksena.

Vaihe 19: Avaa selain ja kutsu URL-osoite http://localhost:8080/. Se palauttaa tyhjän luettelon, koska emme ole lisänneet yhtään käyttäjää luetteloon.

Jos haluat lisätä käyttäjän tietokantaan, lähetämme a LÄHETTÄÄ pyydä käyttämällä Postinkantaja .

Vaihe 20: Avaa Postinkantaja ja toimi seuraavasti:

  • Valitse LÄHETTÄÄ
  • Kutsu URL-osoite http://localhost:8080/add-user.
  • Klikkaa Runko
  • Valitse Sisältötyyppi muodossa JSON (sovellus/json).
  • Syötä tiedot, jotka haluat lisätä tietokantaan. Olemme lisänneet seuraavat tiedot:
 { 'id': '001', 'name': 'Tom', 'email': '[email protected]' } 
  • Klikkaa Lähettää -painiketta.
Spring Boot jpa

Kun napsautamme Lähetä-painiketta, se näkyy Tila: 200 OK . Se tarkoittaa, että pyyntö on suoritettu onnistuneesti.

Vaihe 21: Avaa selain ja kutsu URL-osoite http://localhost:8080. Se palauttaa käyttäjän, jonka olemme lisänneet tietokantaan.

Spring Boot jpa
Lataa Apache derby esimerkkiprojekti