Je bent net begonnen als developer bij een bedrijf genaamd Tech It Easy, dat TV's verkoopt. Tijdens de cursus Spring Boot ga jij een backend applicatie voor hen programmeren. De winkel heeft een inventaris van televisies die moet worden bijgehouden. Na iedere les gaan we deze applicatie een stukje verder uitbouwen in de vorm van huiswerk. Zo krijgen we stap-voor-stap meer ervaring in het bouwen van een backend applicatie. Aan het einde van de cursus zullen we een werkende Tech It Easy backend hebben!
Je hebt de vorige les een begin gemaakt voor de applicatie voor je werkgever TechItEasy. Je hebt een controller aangemaakt met verschillende endpoints. Deze kunnen aangeroepen worden via een frontend. Jij maakt hiervoor gebruik van Postman. Omdat we niet weten of alles bestaat wat de gebruiker opvraagt heb je ook een exception controller gemaakt en een RecordNotFound exception. Na een nieuwe les Spring boot ben je klaar voor de volgende stap van het bouwen van je applicatie.
- Het project bevat, op de juiste plaats in de map-structuur, een map genaamd
models
; - Het project bevat, op de juiste plaats in de map-structuur, een map genaamd
repositories
; - Het project bevat een
Television
in de mapmodels
; - Het project bevat een
TelevisionRepository
; - Het project bevat de volgende dependencies:
Spring Web
Spring Data Jpa
PostgreSQL Driver
- De Application.properties bevat de properties uit hoofdstuk 5.3 van de cursus Spring Boot(met aangepaste namen)
- De TelevisionRepository extends JpaRepository met de juiste parameters
- De Television bevat:
-de attributen:
- Long id (incl. annotaties id en generatedValue)
- String type
- String brand
- String name
- Double price
- Double availableSize
- Int refreshRate
- String screenType
- String screenQuality
- Boolean smartTv
- Boolean wifi
- Boolean voiceControl
- Boolean hdr
- Boolean bluetooth
- Boolean ambiLight
- Integer originalStock
- Integer sold
- default constructor
- constructor
- alle getters en setters
- Laat de application.properties overeenkomen met de gegevens van
PgAdmin
- Je mag de volgende ResponseEntiteiten als return waardes gebruiken:
ResponseEntiteit.ok(television)
ResponseEntiteit.created(null).body(television)
ResponseEntiteit.noContent().build()
- Let er op dat je database-password niet hetzelfde password is dat je gebruikt voor je email, facebook of andere applicatie. Aangezien deze applicatie niet gedeployed hoeft te worden, kun je een makkelijk password kiezen als "password" of "banaan".
Let op: het is uitdagender om jouw eigen stappenplan te maken. Mocht je niet zo goed weten waar je moet beginnen, kun je onderstaand stappenplan volgen:
- Voeg de benodigde dependencies toe aan je POM.xml en laat
Maven
deze installeren - Voeg aan de application.properties de benodigde properties toe
- Maak een nieuwe database aan in
PgAdmin
(zorg dat je application.properties overeenkomt met de naam, password en user van de database) - Maak een nieuwe map aan in je project voor
models
- Maak een nieuwe klasse genaamd
Television
- Voeg de annotatie @Entity toe aan de klasse
- Voeg de juiste attributen toe aan de klasse
- Voeg de beide constructors toe aan de klasse
- Voeg alle getters & setters toe aan de klasse
- Maak een nieuwe map aan in je project voor
repositories
- Voeg aan deze map een nieuwe Interface toe genaamd
TelevisionRepository
- Extend de repository met de
JpaRepository
en geef de juiste attributen mee. (het type van het model en het type van het ID) - Pas de methodes in je controller aan zodat deze gebruik maken van de Television klasse en de repository.
- Test je applicatie met postman en pgadmin. Kijk of je echt televisies kunt opslaan, ophalen, aanpassen en verwijderen.
Een television heeft best veel variabelen, maar er zit nog weinig variatie in de types. Het zijn enkel Strings, Booleans of nummers. Probeer andere datatypes te gebruiken zoals:
- een Datum voor sold (verkoopDatum) of originalStock (inkoopDatum) (er zijn in Java verschillende opties om een datum te maken)
- Een enumeratie voor een of meerdere van availableSize, refreshRate, screenType en screenQuality
- Zoek zelf op Baeldung, W3, GeeksForGeeks, etc op hoe je zulke datatypes maakt.
- Let er ook op hoe dit in je database komt te staan, is dit anders dan andere datatypes?
- Let er ook op dat je deze datatypes goed in postman invoert. Ook dit kun je op internet vinden, maar kun je ook met de ouderwetse gis-en-mis-methode vinden.
Let op: je mag ook andere types proberen, maar je kunt (nog) geen lijsten of andere soorten collecties gebruiken. Elke variabele wordt een kolom in de databasetabel. In zo'n kolom kan maar 1 waarde staan, niet een hele lijst van waardes.