Arbejde med ORM: JPA og Hibernate
Som du allerede ved, er Object-Relational Mapping (ORM) en teknologi, der gør det muligt for udviklere at interagere med en database på objektniveau i stedet for gennem SQL-forespørgsler.
I sin essens er ORM et koncept, der gør det muligt at repræsentere et Java-objekt som data i en database (og omvendt). Det implementeres i form af Java Persistence API (JPA)-specifikationen.
JPA
Virkeligt eksempel
Forestil dig, at JPA er som en standard for stikkontakter i forskellige lande. Denne standard definerer, hvordan en stikkontakt skal se ud, og hvilke specifikationer den skal overholde, så enheder kan tilsluttes den.
Dog producerer selve standarden ikke stikkontakterne. For faktisk at kunne bruge dem, har du brug for producenter, der implementerer denne standard. De fremstiller de faktiske stikkontakter, der overholder standarden.
Hovedkomponenter i JPA
JPA-komponenter er nøgleelementer, der arbejder sammen for at levere funktionalitet til interaktion med en database.
Vi vil udforske disse komponenter gennem virkelighedsnære eksempler for at hjælpe dig med bedre at forbinde dem til fremtidig brug.
Entity
Lad os genkalde, hvad en entity er. En entity er en klasse i din kode, der repræsenterer en tabel i databasen. For eksempel beskriver klassen User, hvilke brugerrelaterede data vi gemmer.
Forestil dig det som et visitkort. Kortet indeholder en persons navn, jobtitel og kontaktinformation. I JPA beskriver en entity-klasse alle de vigtige karakteristika ved et objekt, ligesom et visitkort beskriver en person.
EntityManager
I JPA udfører EntityManager operationer såsom tilføjelse, opdatering eller sletning af poster og håndterer alle disse handlinger.
EntityManager er ansvarlig for håndtering af livscyklussen for entiteter (objekter) og deres interaktion med databasen.
Vigtigste metoder
Sådan bruges EntityManager i Spring Boot
Persistence Context
Livscyklus for entiteter
- Transient: Entiteten er netop oprettet, men er endnu ikke blevet gemt i databasen;
- Managed: Entiteten er blevet gemt i databasen og administreres af
EntityManager. Alle ændringer spores automatisk; - Detached: Entiteten var tidligere administreret, men persistence context er blevet lukket, eller
EntityManagerer blevet ryddet. Ændringer i denne tilstand spores ikke automatisk; - Removed: Entiteten er blevet markeret til sletning fra databasen.
Når EntityManager opretter eller finder en entitet, placeres denne entitet i persistence context.
Alle ændringer foretaget på den administrerede entitet spores automatisk, og ved afslutningen af transaktionen bliver disse ændringer synkroniseret med databasen.
JPQL (Java Persistence Query Language)
I JPQL skrives forespørgsler for at finde eller ændre data i databasen ved brug af en objektorienteret tilgang.
SELECT c from Category c WHERE c.title = 'query'
I JPQL arbejder vi ikke direkte med tabel- og kolonnenavne. I stedet refererer vi til Category-klassen og dens title-felt, hvilket gør forespørgslen lettere at forstå for Java-udviklere. JPQL abstraherer den underliggende databasestruktur væk, så du kan fokusere på objektorienteret modellering.
Hibernate
For eksempel kan Hibernate automatisk generere og opdatere database-tabeller baseret på dine entiteter (klasser).
Hibernate indeholder cache-mekanismer, der gør det muligt at gemme ofte anvendte data i hukommelsen, hvilket reducerer antallet af forespørgsler til databasen og forbedrer applikationens ydeevne.
1. Hvad er JPA?
2. Hvilket interface i JPA bruges til at udføre operationer på entiteter?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.45
Arbejde med ORM: JPA og Hibernate
Stryg for at vise menuen
Som du allerede ved, er Object-Relational Mapping (ORM) en teknologi, der gør det muligt for udviklere at interagere med en database på objektniveau i stedet for gennem SQL-forespørgsler.
I sin essens er ORM et koncept, der gør det muligt at repræsentere et Java-objekt som data i en database (og omvendt). Det implementeres i form af Java Persistence API (JPA)-specifikationen.
JPA
Virkeligt eksempel
Forestil dig, at JPA er som en standard for stikkontakter i forskellige lande. Denne standard definerer, hvordan en stikkontakt skal se ud, og hvilke specifikationer den skal overholde, så enheder kan tilsluttes den.
Dog producerer selve standarden ikke stikkontakterne. For faktisk at kunne bruge dem, har du brug for producenter, der implementerer denne standard. De fremstiller de faktiske stikkontakter, der overholder standarden.
Hovedkomponenter i JPA
JPA-komponenter er nøgleelementer, der arbejder sammen for at levere funktionalitet til interaktion med en database.
Vi vil udforske disse komponenter gennem virkelighedsnære eksempler for at hjælpe dig med bedre at forbinde dem til fremtidig brug.
Entity
Lad os genkalde, hvad en entity er. En entity er en klasse i din kode, der repræsenterer en tabel i databasen. For eksempel beskriver klassen User, hvilke brugerrelaterede data vi gemmer.
Forestil dig det som et visitkort. Kortet indeholder en persons navn, jobtitel og kontaktinformation. I JPA beskriver en entity-klasse alle de vigtige karakteristika ved et objekt, ligesom et visitkort beskriver en person.
EntityManager
I JPA udfører EntityManager operationer såsom tilføjelse, opdatering eller sletning af poster og håndterer alle disse handlinger.
EntityManager er ansvarlig for håndtering af livscyklussen for entiteter (objekter) og deres interaktion med databasen.
Vigtigste metoder
Sådan bruges EntityManager i Spring Boot
Persistence Context
Livscyklus for entiteter
- Transient: Entiteten er netop oprettet, men er endnu ikke blevet gemt i databasen;
- Managed: Entiteten er blevet gemt i databasen og administreres af
EntityManager. Alle ændringer spores automatisk; - Detached: Entiteten var tidligere administreret, men persistence context er blevet lukket, eller
EntityManagerer blevet ryddet. Ændringer i denne tilstand spores ikke automatisk; - Removed: Entiteten er blevet markeret til sletning fra databasen.
Når EntityManager opretter eller finder en entitet, placeres denne entitet i persistence context.
Alle ændringer foretaget på den administrerede entitet spores automatisk, og ved afslutningen af transaktionen bliver disse ændringer synkroniseret med databasen.
JPQL (Java Persistence Query Language)
I JPQL skrives forespørgsler for at finde eller ændre data i databasen ved brug af en objektorienteret tilgang.
SELECT c from Category c WHERE c.title = 'query'
I JPQL arbejder vi ikke direkte med tabel- og kolonnenavne. I stedet refererer vi til Category-klassen og dens title-felt, hvilket gør forespørgslen lettere at forstå for Java-udviklere. JPQL abstraherer den underliggende databasestruktur væk, så du kan fokusere på objektorienteret modellering.
Hibernate
For eksempel kan Hibernate automatisk generere og opdatere database-tabeller baseret på dine entiteter (klasser).
Hibernate indeholder cache-mekanismer, der gør det muligt at gemme ofte anvendte data i hukommelsen, hvilket reducerer antallet af forespørgsler til databasen og forbedrer applikationens ydeevne.
1. Hvad er JPA?
2. Hvilket interface i JPA bruges til at udføre operationer på entiteter?
Tak for dine kommentarer!