Werken met ORM: JPA en Hibernate
Zoals je al weet, is Object-Relational Mapping (ORM) een technologie die ontwikkelaars in staat stelt om op objectniveau met een database te werken in plaats van via SQL-query's.
In essentie is ORM een concept waarmee een Java-object kan worden weergegeven als data in een database (en omgekeerd). Het wordt geïmplementeerd in de vorm van de Java Persistence API (JPA) specificatie.
JPA
Praktijkvoorbeeld
Stel je voor dat JPA vergelijkbaar is met een standaard voor stopcontacten in verschillende landen. Deze standaard bepaalt hoe een stopcontact eruit moet zien en aan welke specificaties het moet voldoen zodat apparaten erop kunnen worden aangesloten.
De standaard zelf produceert echter geen stopcontacten. Om ze daadwerkelijk te gebruiken, heb je fabrikanten nodig die deze standaard implementeren. Zij maken de daadwerkelijke stopcontacten die voldoen aan de standaard.
Belangrijkste componenten van de JPA
JPA-componenten zijn belangrijke elementen die samenwerken om functionaliteit te bieden voor interactie met een database.
We zullen deze componenten verkennen aan de hand van praktijkvoorbeelden om je te helpen ze beter te associëren voor toekomstig gebruik.
Entiteit
Laten we herinneren wat een entiteit is. Een entiteit is een klasse in je code die een tabel in de database voorstelt. Bijvoorbeeld, de User-klasse beschrijft welke gebruikersgerelateerde gegevens we opslaan.
Stel het je voor als een visitekaartje. Het kaartje bevat de naam, functie en contactgegevens van een persoon. In JPA beschrijft een entiteitsklasse alle belangrijke kenmerken van een object, net zoals een visitekaartje een persoon beschrijft.
EntityManager
In JPA voert de EntityManager bewerkingen uit zoals toevoegen, bijwerken of verwijderen van records, en beheert al deze acties.
EntityManager is verantwoordelijk voor het beheer van de levenscyclus van entiteiten (objecten) en hun interactie met de database.
Belangrijkste methoden
Zo gebruikt u EntityManager in Spring Boot
Persistentiecontext
Levenscyclus van entiteiten
- Transient: De entiteit is zojuist aangemaakt, maar is nog niet opgeslagen in de database;
- Managed: De entiteit is opgeslagen in de database en wordt beheerd door de
EntityManager. Alle wijzigingen worden automatisch gevolgd; - Detached: De entiteit werd eerder beheerd, maar de persistentiecontext is gesloten of de
EntityManageris geleegd. Wijzigingen in deze status worden niet automatisch gevolgd; - Removed: De entiteit is gemarkeerd voor verwijdering uit de database.
Wanneer de EntityManager een entiteit aanmaakt of vindt, plaatst het deze entiteit in de persistentiecontext.
Alle wijzigingen die aan de beheerde entiteit worden aangebracht, worden automatisch bijgehouden en na het afronden van de transactie worden deze wijzigingen gesynchroniseerd met de database.
JPQL (Java Persistence Query Language)
In JPQL worden query's geschreven om gegevens in de database te vinden of te wijzigen met een objectgeoriënteerde benadering.
SELECT c from Category c WHERE c.title = 'query'
In JPQL werken we niet direct met de tabel- en kolomnamen. In plaats daarvan verwijzen we naar de Category klasse en het title veld, waardoor de query begrijpelijker wordt voor Java-ontwikkelaars. JPQL abstraheert de onderliggende databasestructuur, zodat je je kunt richten op het objectgeoriënteerde model.
Hibernate
Bijvoorbeeld, Hibernate kan automatisch database tabellen genereren en bijwerken op basis van je entiteiten (klassen).
Hibernate bevat cachingmechanismen waarmee vaak gebruikte gegevens in het geheugen kunnen worden opgeslagen, waardoor het aantal verzoeken aan de database wordt verminderd en de prestaties van de applicatie worden verbeterd.
1. Wat is JPA?
2. Welke interface in JPA wordt gebruikt voor het uitvoeren van bewerkingen op entiteiten?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Werken met ORM: JPA en Hibernate
Veeg om het menu te tonen
Zoals je al weet, is Object-Relational Mapping (ORM) een technologie die ontwikkelaars in staat stelt om op objectniveau met een database te werken in plaats van via SQL-query's.
In essentie is ORM een concept waarmee een Java-object kan worden weergegeven als data in een database (en omgekeerd). Het wordt geïmplementeerd in de vorm van de Java Persistence API (JPA) specificatie.
JPA
Praktijkvoorbeeld
Stel je voor dat JPA vergelijkbaar is met een standaard voor stopcontacten in verschillende landen. Deze standaard bepaalt hoe een stopcontact eruit moet zien en aan welke specificaties het moet voldoen zodat apparaten erop kunnen worden aangesloten.
De standaard zelf produceert echter geen stopcontacten. Om ze daadwerkelijk te gebruiken, heb je fabrikanten nodig die deze standaard implementeren. Zij maken de daadwerkelijke stopcontacten die voldoen aan de standaard.
Belangrijkste componenten van de JPA
JPA-componenten zijn belangrijke elementen die samenwerken om functionaliteit te bieden voor interactie met een database.
We zullen deze componenten verkennen aan de hand van praktijkvoorbeelden om je te helpen ze beter te associëren voor toekomstig gebruik.
Entiteit
Laten we herinneren wat een entiteit is. Een entiteit is een klasse in je code die een tabel in de database voorstelt. Bijvoorbeeld, de User-klasse beschrijft welke gebruikersgerelateerde gegevens we opslaan.
Stel het je voor als een visitekaartje. Het kaartje bevat de naam, functie en contactgegevens van een persoon. In JPA beschrijft een entiteitsklasse alle belangrijke kenmerken van een object, net zoals een visitekaartje een persoon beschrijft.
EntityManager
In JPA voert de EntityManager bewerkingen uit zoals toevoegen, bijwerken of verwijderen van records, en beheert al deze acties.
EntityManager is verantwoordelijk voor het beheer van de levenscyclus van entiteiten (objecten) en hun interactie met de database.
Belangrijkste methoden
Zo gebruikt u EntityManager in Spring Boot
Persistentiecontext
Levenscyclus van entiteiten
- Transient: De entiteit is zojuist aangemaakt, maar is nog niet opgeslagen in de database;
- Managed: De entiteit is opgeslagen in de database en wordt beheerd door de
EntityManager. Alle wijzigingen worden automatisch gevolgd; - Detached: De entiteit werd eerder beheerd, maar de persistentiecontext is gesloten of de
EntityManageris geleegd. Wijzigingen in deze status worden niet automatisch gevolgd; - Removed: De entiteit is gemarkeerd voor verwijdering uit de database.
Wanneer de EntityManager een entiteit aanmaakt of vindt, plaatst het deze entiteit in de persistentiecontext.
Alle wijzigingen die aan de beheerde entiteit worden aangebracht, worden automatisch bijgehouden en na het afronden van de transactie worden deze wijzigingen gesynchroniseerd met de database.
JPQL (Java Persistence Query Language)
In JPQL worden query's geschreven om gegevens in de database te vinden of te wijzigen met een objectgeoriënteerde benadering.
SELECT c from Category c WHERE c.title = 'query'
In JPQL werken we niet direct met de tabel- en kolomnamen. In plaats daarvan verwijzen we naar de Category klasse en het title veld, waardoor de query begrijpelijker wordt voor Java-ontwikkelaars. JPQL abstraheert de onderliggende databasestructuur, zodat je je kunt richten op het objectgeoriënteerde model.
Hibernate
Bijvoorbeeld, Hibernate kan automatisch database tabellen genereren en bijwerken op basis van je entiteiten (klassen).
Hibernate bevat cachingmechanismen waarmee vaak gebruikte gegevens in het geheugen kunnen worden opgeslagen, waardoor het aantal verzoeken aan de database wordt verminderd en de prestaties van de applicatie worden verbeterd.
1. Wat is JPA?
2. Welke interface in JPA wordt gebruikt voor het uitvoeren van bewerkingen op entiteiten?
Bedankt voor je feedback!