Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Työskentely ORM:n Kanssa: JPA ja Hibernate | Työskentely Tietokantojen Kanssa
Spring Boot Backend

bookTyöskentely ORM:n Kanssa: JPA ja Hibernate

Kuten jo tiedät, Object-Relational Mapping (ORM) on teknologia, joka mahdollistaa kehittäjien käsitellä tietokantaa olioiden tasolla sen sijaan, että käytettäisiin SQL-kyselyitä.

Ytimeltään ORM on käsite, joka mahdollistaa Java-olion esittämisen tietokannan tietona (ja päinvastoin). Se on toteutettu Java Persistence API (JPA) -määrittelyn muodossa.

JPA

Käytännön esimerkki

Kuvittele, että JPA on kuin standardi eri maiden sähköpistorasioille. Tämä standardi määrittelee, miltä pistorasian tulisi näyttää ja mitä vaatimuksia sen tulee noudattaa, jotta laitteet voidaan kytkeä siihen.

Kuitenkin itse standardi ei valmista pistorasioita. Jotta niitä voidaan käyttää, tarvitaan valmistajia, jotka toteuttavat tämän standardin. He luovat varsinaiset pistorasiat, jotka noudattavat standardia.

JPA:n pääkomponentit

JPA-komponentit ovat keskeisiä elementtejä, jotka toimivat yhdessä tarjotakseen toiminnallisuutta tietokannan kanssa vuorovaikutukseen.

Tarkastelemme näitä komponentteja käytännön esimerkkien avulla, jotta voit yhdistää ne helpommin tulevaa käyttöä varten.

Entiteetti

Palautetaan mieleen, mitä entiteetti tarkoittaa. Entiteetti on luokka koodissasi, joka edustaa taulua tietokannassa. Esimerkiksi User-luokka kuvaa, mitä käyttäjään liittyviä tietoja tallennamme.

Kuvittele se käyntikorttina. Kortti sisältää henkilön nimen, työnimikkeen ja yhteystiedot. JPA:ssa entiteettiluokka kuvaa kaikki olion tärkeät ominaisuudet, aivan kuten käyntikortti kuvaa henkilöä.

EntityManager

JPA:ssa EntityManager suorittaa toimintoja kuten lisääminen, päivittäminen tai poistaminen tietueille, hallinnoiden kaikkia näitä toimenpiteitä.

EntityManager vastaa entiteettien (olioiden) elinkaaren hallinnasta sekä niiden vuorovaikutuksesta tietokannan kanssa.

Pääasialliset metodit

Näin käytetään EntityManageria Spring Bootissa

Persistenssikonteksti

Entiteettien elinkaari

  • Transient: Entiteetti on juuri luotu, mutta sitä ei ole vielä tallennettu tietokantaan;
  • Managed: Entiteetti on tallennettu tietokantaan ja sitä hallinnoi EntityManager. Kaikki muutokset siihen seurataan automaattisesti;
  • Detached: Entiteettiä on aiemmin hallinnoitu, mutta persistenssikonteksti on suljettu tai EntityManager on tyhjennetty. Tässä tilassa tehdyt muutokset eivät tallennu automaattisesti;
  • Removed: Entiteetti on merkitty poistettavaksi tietokannasta.

Kun EntityManager luo tai löytää entiteetin, se sijoittaa kyseisen entiteetin persistenssikontekstiin.

Kaikki muutokset, jotka tehdään hallittuun entiteettiin, seurataan automaattisesti, ja transaktion päättyessä nämä muutokset synkronoidaan tietokannan kanssa.

JPQL (Java Persistence Query Language)

JPQL:ssä kirjoitetaan kyselyitä tietojen etsimiseen tai muokkaamiseen tietokannassa käyttäen olio-orientoitunutta tyyliä.

SELECT c from Category c WHERE c.title = 'query'

JPQL:ssa emme käsittele suoraan taulujen ja sarakkeiden nimiä. Sen sijaan viittaamme Category-luokkaan ja sen title-kenttään, mikä tekee kyselystä helpommin ymmärrettävän Java-kehittäjille. JPQL abstrahoi taustalla olevan tietokantarakenteen, jolloin voit keskittyä olio-ohjelmointimalliin.

Hibernate

Esimerkiksi Hibernate voi automaattisesti luoda ja päivittää tietokantatauluja entiteettiesi (luokkien) perusteella.

Hibernate sisältää välimuistimekanismeja, joiden avulla usein käytetty data voidaan tallentaa muistiin, mikä vähentää tietokantakyselyiden määrää ja nopeuttaa sovelluksen suorituskykyä.

1. Mikä on JPA?

2. Mitä JPA:n rajapintaa käytetään entiteettien käsittelyyn?

question mark

Mikä on JPA?

Select the correct answer

question mark

Mitä JPA:n rajapintaa käytetään entiteettien käsittelyyn?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

What are the main differences between JPA and Hibernate?

Can you explain more about how the EntityManager works?

How does JPQL differ from regular SQL?

Awesome!

Completion rate improved to 3.45

bookTyöskentely ORM:n Kanssa: JPA ja Hibernate

Pyyhkäise näyttääksesi valikon

Kuten jo tiedät, Object-Relational Mapping (ORM) on teknologia, joka mahdollistaa kehittäjien käsitellä tietokantaa olioiden tasolla sen sijaan, että käytettäisiin SQL-kyselyitä.

Ytimeltään ORM on käsite, joka mahdollistaa Java-olion esittämisen tietokannan tietona (ja päinvastoin). Se on toteutettu Java Persistence API (JPA) -määrittelyn muodossa.

JPA

Käytännön esimerkki

Kuvittele, että JPA on kuin standardi eri maiden sähköpistorasioille. Tämä standardi määrittelee, miltä pistorasian tulisi näyttää ja mitä vaatimuksia sen tulee noudattaa, jotta laitteet voidaan kytkeä siihen.

Kuitenkin itse standardi ei valmista pistorasioita. Jotta niitä voidaan käyttää, tarvitaan valmistajia, jotka toteuttavat tämän standardin. He luovat varsinaiset pistorasiat, jotka noudattavat standardia.

JPA:n pääkomponentit

JPA-komponentit ovat keskeisiä elementtejä, jotka toimivat yhdessä tarjotakseen toiminnallisuutta tietokannan kanssa vuorovaikutukseen.

Tarkastelemme näitä komponentteja käytännön esimerkkien avulla, jotta voit yhdistää ne helpommin tulevaa käyttöä varten.

Entiteetti

Palautetaan mieleen, mitä entiteetti tarkoittaa. Entiteetti on luokka koodissasi, joka edustaa taulua tietokannassa. Esimerkiksi User-luokka kuvaa, mitä käyttäjään liittyviä tietoja tallennamme.

Kuvittele se käyntikorttina. Kortti sisältää henkilön nimen, työnimikkeen ja yhteystiedot. JPA:ssa entiteettiluokka kuvaa kaikki olion tärkeät ominaisuudet, aivan kuten käyntikortti kuvaa henkilöä.

EntityManager

JPA:ssa EntityManager suorittaa toimintoja kuten lisääminen, päivittäminen tai poistaminen tietueille, hallinnoiden kaikkia näitä toimenpiteitä.

EntityManager vastaa entiteettien (olioiden) elinkaaren hallinnasta sekä niiden vuorovaikutuksesta tietokannan kanssa.

Pääasialliset metodit

Näin käytetään EntityManageria Spring Bootissa

Persistenssikonteksti

Entiteettien elinkaari

  • Transient: Entiteetti on juuri luotu, mutta sitä ei ole vielä tallennettu tietokantaan;
  • Managed: Entiteetti on tallennettu tietokantaan ja sitä hallinnoi EntityManager. Kaikki muutokset siihen seurataan automaattisesti;
  • Detached: Entiteettiä on aiemmin hallinnoitu, mutta persistenssikonteksti on suljettu tai EntityManager on tyhjennetty. Tässä tilassa tehdyt muutokset eivät tallennu automaattisesti;
  • Removed: Entiteetti on merkitty poistettavaksi tietokannasta.

Kun EntityManager luo tai löytää entiteetin, se sijoittaa kyseisen entiteetin persistenssikontekstiin.

Kaikki muutokset, jotka tehdään hallittuun entiteettiin, seurataan automaattisesti, ja transaktion päättyessä nämä muutokset synkronoidaan tietokannan kanssa.

JPQL (Java Persistence Query Language)

JPQL:ssä kirjoitetaan kyselyitä tietojen etsimiseen tai muokkaamiseen tietokannassa käyttäen olio-orientoitunutta tyyliä.

SELECT c from Category c WHERE c.title = 'query'

JPQL:ssa emme käsittele suoraan taulujen ja sarakkeiden nimiä. Sen sijaan viittaamme Category-luokkaan ja sen title-kenttään, mikä tekee kyselystä helpommin ymmärrettävän Java-kehittäjille. JPQL abstrahoi taustalla olevan tietokantarakenteen, jolloin voit keskittyä olio-ohjelmointimalliin.

Hibernate

Esimerkiksi Hibernate voi automaattisesti luoda ja päivittää tietokantatauluja entiteettiesi (luokkien) perusteella.

Hibernate sisältää välimuistimekanismeja, joiden avulla usein käytetty data voidaan tallentaa muistiin, mikä vähentää tietokantakyselyiden määrää ja nopeuttaa sovelluksen suorituskykyä.

1. Mikä on JPA?

2. Mitä JPA:n rajapintaa käytetään entiteettien käsittelyyn?

question mark

Mikä on JPA?

Select the correct answer

question mark

Mitä JPA:n rajapintaa käytetään entiteettien käsittelyyn?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4
some-alt