Module 4: Java Persistence API Flashcards
Wat is een relationele database?
Een database dat hun data opslaat in tabellen die onderling relaties met elkaar hebben.
Wat is een Primary Key?
Een eigenschap van een tabel waarmee een rij geidentificeerd kan worden.
Wat is een verplicht eigenschap van een tabel?
Hij moet een Primary Key (PK) hebben
Over hoeveel kolommen mag een Primary Key bestaan?
op een of meerdere kolommen
Waarom tabellen indexen?
Hiermee is het mogelijk om het databasesysteem te optimaliseren door data sneller te kunnen ophalen.
Wat is een stored procedure?
Stored procedures zijn opgeslagen query’s die in de databaselaag zelf zitten. Deze kunnen vervolgens aangeroepen worden vanuit andere query’s of op basis van een preconditie.
Wat is een view?
Views zijn opgeslagen queries die zich gedragen als tabellen. Hiermee kun je bijvoorbeeld data uit diverse tabellen samenbrengen in een nieuwe (virtuele) tabel.
Wat is een schema?
Tabellen (met indexen en relaties), stored procedures en views worden samen ondergebracht in een schema.
Een schema kan worden gebruikt om de data te scheiden en bijvoorbeeld authorisatie toe te passen.
Waar staat SQL voor?
Structured Query Language
Waar staat JDBC voor?
Java Database Connectivity
Waar wordt JDBC voor gebruikt?
Om een verbinding met een database te maken.
Waar wordt SQL voor gebruikt?
Om data uit een database op te halen middels queries
Hoe kunnen we een verbinding maken met een Database binnen Java? (welke klasse en functie?)
Door gebruik te maken van JDBC en de klasse DriverManager met de functie getConnection().
Waarom is de standaard JDBC-implementatie niet toereikend in de praktijk?
Een relationeel model valt niet direct 1:1 over te nemen naar het object model in een applicatie.
(Dit noemen we ook wel object-relational mismatch)
Wat zijn de onvolkomendheden van Object-relational mismatch?
- Granulariteit
- Overerving
- Identiteit
- Relaties
- Navigatie
Wat is ORM en waar staat het voor?
Object-relational mapping (ORM)
Met een ORM wordt automatisch gemapped tussen het objectenmodel en het databasemodel. Zodra een query op de DB wordt uitgevoerd, zorgt een ORM er voor dat het resultaat van je query omgezet wordt naar een of meerdere Java-objecten.
Welke specificatie heeft Java voor de implementatie van een ORM?
Java Persistence API (JPA).
Er zijn verschillende implementaties die aan deze specificatie voldoen.
Hoe worden JPA implementaties ook wel genoemd?
JPA-providers
Hoe wordt een nieuwe entiteit toegevoegd aan de Persistence Context?
Middels de persist() methode
Hoe zorgen we ervoor dat een entiteit tijdelijk uit de Persistence Context verwijderd wordt?
Een entiteit kun je ook detachen met de detach-methode. Dit zorgt ervoor dat de context niet langer naar wijzigingen kijkt. We noemen de entiteit dan gedetacht.
Hoe zorgen we ervoor dat een gedetachte entiteit weer wordt gemanaged fdoor de Persistence Context (PC)?
Zodra je een gedetachte entiteit weer wilt meenemen in de context, kun je deze mergen. Vanaf dit moment is de entiteit weer gemanaged. Dit kun je doen met de merge-methode.
Hoe verwijderen we een entiteit uit de Persistence Context (PC)?
Als je een entiteit permanent uit de context wilt verwijderen, gebruik je de remove-methode. Dit zorgt ervoor dat de entiteit wordt verwijderd en eventuele relaties worden verbroken.
Uit welke package komen de meeste JPA klassen?
javax.persistence
De mapping van objecten naar entiteiten wordt gedaan in de ____
persistence unit
Hoe kan je een persistence unit definiëren?
- persistence.xml bestand in de META-INF-map
- Annotaties
Wat is JPQL en waar wordt het voor gebruikt?
Java Persistence Query Language
Om objecten uit een database te halen gebruikt JPA zijn eigen querytaal (JPQL). Deze lijkt op SQL maar is meer object-geörienteerd. Zo kun je onder andere van database-entiteiten eigenschappen ophalen door de punt-notatie.
Om JPA in Spring te gebruiken, moeten er een aantal beans gedefinieerd worden. Welke moet je definiëren?
- DataSource
- EntityManager
- TransactionManager
Wat is de verantwoordelijkheid van de Data source bean?
De data source zorgt voor een connectie naar je database. Deze verbinding komt tot stand door de driver, URL en eventueel een gebruikersnaam en wachtwoord mee te geven. Daarnaast zorgt de datasource ervoor dat de verbinding in de connectiepool verwerkt wordt.
Wat is een Connectiepool?
Zodra je je applicatie opstart wordt er een verzameling connecties aangemaakt. Aangezien het maken van een databaseverbinding een kostbare operatie is, worden deze niet bij iedere query opnieuw gemaakt, maar blijven ze onderhouden tot het moment dat je de applicatie stopt. Deze verbindingen samen noemen we de connectiepool (CP).
Wat is de verantwoordelijkheid van de Entity manager bean?
Een entity manager (EM) regelt de API voor het toevoegen en verwijderen van entiteiten. De manager verzorgt ook een persistence context. Een entity manager kan uitsluitend gemaakt worden via een factory.
Wat is de verantwoordelijkheid van de Transactiemanager bean?
Een reeks samenhangende bewerkingen op entiteiten wordt een transactie genoemd. Om de integriteit en atomiciteit van een database te kunnen waarborgen, worden deze transacties bijgehouden in een transactiemanager (TM). In het geval van een databasefout zou deze manager een rollback uit kunnen voeren om de vorige staat te herstellen.
Wat doet de Spring annotatie @Transactional?
Transactioneel wordt gebruikt om meer dan één schrijfactie op een database te combineren als een enkele atomaire bewerking. Als er iets fout gaat, draait Spring de bewerking terug met een rollback.
Wat is Dirty checking?
Bij Dirty checking detecteert hibernate automatisch of een object is gewijzigd (of niet) en moet worden bijgewerkt. Dirty checking stelt de gebruiker of ontwikkelaar in staat om tijdrovende schrijfacties voor databases te vermijden.
Wat is de Spring feature Transparent persistence?
Transparante persistentie is het opslaan en ophalen van persistente gegevens met weinig of geen werk van u, de ontwikkelaar.