Arbete med ORM: JPA och Hibernate
Som du redan vet, är Object-Relational Mapping (ORM) en teknik som möjliggör för utvecklare att interagera med en databas på objektnivå istället för genom SQL-frågor.
I grund och botten är ORM ett koncept som möjliggör att ett Java-objekt kan representeras som data i en databas (och tvärtom). Det implementeras i form av Java Persistence API (JPA)-specifikationen.
JPA
Exempel från verkliga livet
Föreställ dig att JPA är som en standard för eluttag i olika länder. Denna standard definierar hur ett uttag ska se ut och vilka specifikationer det måste följa så att enheter kan anslutas till det.
Dock tillverkar inte standarden själv uttagen. För att faktiskt använda dem behöver du tillverkare som implementerar denna standard. De skapar de faktiska uttagen som uppfyller kraven.
Huvudkomponenter i JPA
JPA-komponenter är nyckelelement som samarbetar för att tillhandahålla funktionalitet för att interagera med en databas.
Vi kommer att utforska dessa komponenter genom verkliga exempel för att hjälpa dig att bättre associera dem för framtida användning.
Entitet
Låt oss påminna oss vad en entitet är. En entitet är en klass i din kod som representerar en tabell i databasen. Till exempel beskriver klassen User vilken användarrelaterad data vi lagrar.
Föreställ dig det som ett visitkort. Kortet innehåller en persons namn, befattning och kontaktinformation. I JPA beskriver en entitetsklass alla viktiga egenskaper hos ett objekt, precis som ett visitkort beskriver en person.
EntityManager
I JPA utför EntityManager operationer såsom lägg till, uppdatera eller ta bort poster, och hanterar alla dessa åtgärder.
EntityManager ansvarar för att hantera livscykeln för entiteter (objekt) och deras interaktion med databasen.
Huvudsakliga metoder
Så här använder du EntityManager i Spring Boot
Persistenskontext
Livscykel för entiteter
- Transient: Entiteten har precis skapats men har inte ännu sparats i databasen;
- Managed: Entiteten har sparats i databasen och hanteras av
EntityManager. Alla ändringar spåras automatiskt; - Detached: Entiteten var tidigare hanterad, men persistenskontexten har stängts eller
EntityManagerhar rensats. Ändringar i detta tillstånd spåras inte automatiskt; - Removed: Entiteten har markerats för borttagning från databasen.
När EntityManager skapar eller hittar en entitet, placeras denna entitet i persistenskontexten.
Alla ändringar som görs på den hanterade entiteten spåras automatiskt, och vid slutförandet av transaktionen synkroniseras dessa ändringar med databasen.
JPQL (Java Persistence Query Language)
I JPQL skrivs frågor för att hitta eller modifiera data i databasen med en objektorienterad stil.
SELECT c from Category c WHERE c.title = 'query'
I JPQL arbetar vi inte direkt med tabell- och kolumnnamn. Istället refererar vi till Category-klassen och dess fält title, vilket gör frågan lättare att förstå för Java-utvecklare. JPQL abstraherar bort den underliggande databasstrukturen och låter dig fokusera på den objektorienterade modellen.
Hibernate
Till exempel kan Hibernate automatiskt generera och uppdatera databastabeller baserat på dina entiteter (klasser).
Hibernate innehåller cache-mekanismer som gör det möjligt att lagra ofta använd data i minnet, vilket minskar antalet förfrågningar till databasen och snabbar upp applikationens prestanda.
1. Vad är JPA?
2. Vilket gränssnitt i JPA används för att utföra operationer på entiteter?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.45
Arbete med ORM: JPA och Hibernate
Svep för att visa menyn
Som du redan vet, är Object-Relational Mapping (ORM) en teknik som möjliggör för utvecklare att interagera med en databas på objektnivå istället för genom SQL-frågor.
I grund och botten är ORM ett koncept som möjliggör att ett Java-objekt kan representeras som data i en databas (och tvärtom). Det implementeras i form av Java Persistence API (JPA)-specifikationen.
JPA
Exempel från verkliga livet
Föreställ dig att JPA är som en standard för eluttag i olika länder. Denna standard definierar hur ett uttag ska se ut och vilka specifikationer det måste följa så att enheter kan anslutas till det.
Dock tillverkar inte standarden själv uttagen. För att faktiskt använda dem behöver du tillverkare som implementerar denna standard. De skapar de faktiska uttagen som uppfyller kraven.
Huvudkomponenter i JPA
JPA-komponenter är nyckelelement som samarbetar för att tillhandahålla funktionalitet för att interagera med en databas.
Vi kommer att utforska dessa komponenter genom verkliga exempel för att hjälpa dig att bättre associera dem för framtida användning.
Entitet
Låt oss påminna oss vad en entitet är. En entitet är en klass i din kod som representerar en tabell i databasen. Till exempel beskriver klassen User vilken användarrelaterad data vi lagrar.
Föreställ dig det som ett visitkort. Kortet innehåller en persons namn, befattning och kontaktinformation. I JPA beskriver en entitetsklass alla viktiga egenskaper hos ett objekt, precis som ett visitkort beskriver en person.
EntityManager
I JPA utför EntityManager operationer såsom lägg till, uppdatera eller ta bort poster, och hanterar alla dessa åtgärder.
EntityManager ansvarar för att hantera livscykeln för entiteter (objekt) och deras interaktion med databasen.
Huvudsakliga metoder
Så här använder du EntityManager i Spring Boot
Persistenskontext
Livscykel för entiteter
- Transient: Entiteten har precis skapats men har inte ännu sparats i databasen;
- Managed: Entiteten har sparats i databasen och hanteras av
EntityManager. Alla ändringar spåras automatiskt; - Detached: Entiteten var tidigare hanterad, men persistenskontexten har stängts eller
EntityManagerhar rensats. Ändringar i detta tillstånd spåras inte automatiskt; - Removed: Entiteten har markerats för borttagning från databasen.
När EntityManager skapar eller hittar en entitet, placeras denna entitet i persistenskontexten.
Alla ändringar som görs på den hanterade entiteten spåras automatiskt, och vid slutförandet av transaktionen synkroniseras dessa ändringar med databasen.
JPQL (Java Persistence Query Language)
I JPQL skrivs frågor för att hitta eller modifiera data i databasen med en objektorienterad stil.
SELECT c from Category c WHERE c.title = 'query'
I JPQL arbetar vi inte direkt med tabell- och kolumnnamn. Istället refererar vi till Category-klassen och dess fält title, vilket gör frågan lättare att förstå för Java-utvecklare. JPQL abstraherar bort den underliggande databasstrukturen och låter dig fokusera på den objektorienterade modellen.
Hibernate
Till exempel kan Hibernate automatiskt generera och uppdatera databastabeller baserat på dina entiteter (klasser).
Hibernate innehåller cache-mekanismer som gör det möjligt att lagra ofta använd data i minnet, vilket minskar antalet förfrågningar till databasen och snabbar upp applikationens prestanda.
1. Vad är JPA?
2. Vilket gränssnitt i JPA används för att utföra operationer på entiteter?
Tack för dina kommentarer!