Työ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
EntityManageron 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?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Työ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
EntityManageron 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?
Kiitos palautteestasi!