Drieniveaustructuur
Dit wordt gedaan om specifieke logica te scheiden in verschillende klassen/pakketten, in plaats van alles in één klasse te schrijven.
De volgorde waarin een verzoek wordt verwerkt is Controller → Service → Repository. Daarna wordt de respons in omgekeerde volgorde teruggegeven: Repository -> Service -> Controller. We beginnen de implementatie met de Repository laag.
Repository-laag
Dit is de laagste laag, waar we verwerkte gegevens van de Service laag ontvangen en opslaan in onze database.
Deze klassen worden gemarkeerd met de @Repository annotatie om te worden toegevoegd aan de Spring-context.
Main.java
1234@Repository public class RepositoryLevel { // connect DB }
Voorbeeld van het gebruik van de repository
Serviceniveau
Hier vindt de kernlogica van de applicatie plaats. In services verwerken of wijzigen we gegevens voordat we deze doorgeven aan de repositorylaag.
Voor services gebruiken we de @Service annotatie, waarmee de klasse wordt aangeduid als een service die de bedrijfslogica bevat.
Main.java
1234567@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }
Voorbeeld van het gebruik van de Service
Controllerlaag
Deze laag verzorgt de eerste interactie tussen de client en de server. Alle verzoeken die door de client worden verzonden, komen hier aan en deze laag is verantwoordelijk voor het ontvangen van de gegevens geleverd door de client.
Het verwerkt binnenkomende HTTP-verzoeken en retourneert HTTP-antwoorden. Controllers fungeren als een "brug" tussen de client en de bedrijfslogica.
Op dit niveau worden twee annotaties gebruikt om een klasse aan te duiden als een controller:
-
@RestController: Verklaart een klasse tot een REST-controller, die HTTP-verzoeken afhandelt en gegevens retourneert in JSON-formaat; -
@Controller: Verklaart een klasse tot een MVC-controller, die verzoeken afhandelt en weergaven retourneert (bijvoorbeeld HTML).
Main.java
12345678@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }
De @GetMapping annotatie specificeert de URL voor een gegeven verzoek. Dit betekent dat we het gespecificeerde pad /root aan het domein toevoegen, en in ruil daarvoor ontvangen we de overeenkomende pagina.
Voorbeeld van het gebruik van de Controller
De Thymeleaf-verslaving uit de video
Hier is de link naar de Thymeleaf afhankelijkheid in de Maven repository.
Maar wat gebeurt er als je deze aanpak niet volgt?
Eigenlijk gebeurt er technisch gezien niets. Zelfs als je alle bedrijfslogica in de controller schrijft, daar verbinding maakt met de database en het antwoord naar de client vanaf dezelfde plek retourneert, zal alles hetzelfde werken.
Echter, je zult je waarschijnlijk niet meer herinneren wat je daar hebt geschreven na een paar weken, omdat alle applicatielogica op één plek staat, wat uitermate onhandig is.
Samenvatting
De drie-lagenarchitectuur biedt een duidelijke scheiding van verantwoordelijkheden tussen de lagen van controllers, services en repositories, waardoor het ontwikkelproces meer gestructureerd en beter onderhoudbaar wordt.
Elke laag richt zich op zijn specifieke taak, wat zowel de workflow als het projectbeheer vereenvoudigt.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain the main responsibilities of each layer in the three-tier architecture?
How does the data flow between the controller, service, and repository layers?
Why is it important to separate logic into different layers instead of using a single class?
Awesome!
Completion rate improved to 3.45
Drieniveaustructuur
Veeg om het menu te tonen
Dit wordt gedaan om specifieke logica te scheiden in verschillende klassen/pakketten, in plaats van alles in één klasse te schrijven.
De volgorde waarin een verzoek wordt verwerkt is Controller → Service → Repository. Daarna wordt de respons in omgekeerde volgorde teruggegeven: Repository -> Service -> Controller. We beginnen de implementatie met de Repository laag.
Repository-laag
Dit is de laagste laag, waar we verwerkte gegevens van de Service laag ontvangen en opslaan in onze database.
Deze klassen worden gemarkeerd met de @Repository annotatie om te worden toegevoegd aan de Spring-context.
Main.java
1234@Repository public class RepositoryLevel { // connect DB }
Voorbeeld van het gebruik van de repository
Serviceniveau
Hier vindt de kernlogica van de applicatie plaats. In services verwerken of wijzigen we gegevens voordat we deze doorgeven aan de repositorylaag.
Voor services gebruiken we de @Service annotatie, waarmee de klasse wordt aangeduid als een service die de bedrijfslogica bevat.
Main.java
1234567@Service public class ServiceLevel { public void logic() { //TODO: write business logic } }
Voorbeeld van het gebruik van de Service
Controllerlaag
Deze laag verzorgt de eerste interactie tussen de client en de server. Alle verzoeken die door de client worden verzonden, komen hier aan en deze laag is verantwoordelijk voor het ontvangen van de gegevens geleverd door de client.
Het verwerkt binnenkomende HTTP-verzoeken en retourneert HTTP-antwoorden. Controllers fungeren als een "brug" tussen de client en de bedrijfslogica.
Op dit niveau worden twee annotaties gebruikt om een klasse aan te duiden als een controller:
-
@RestController: Verklaart een klasse tot een REST-controller, die HTTP-verzoeken afhandelt en gegevens retourneert in JSON-formaat; -
@Controller: Verklaart een klasse tot een MVC-controller, die verzoeken afhandelt en weergaven retourneert (bijvoorbeeld HTML).
Main.java
12345678@Controller public class ControllerLevel { @GetMapping("/root") public String getPage() { return "template"; } }
De @GetMapping annotatie specificeert de URL voor een gegeven verzoek. Dit betekent dat we het gespecificeerde pad /root aan het domein toevoegen, en in ruil daarvoor ontvangen we de overeenkomende pagina.
Voorbeeld van het gebruik van de Controller
De Thymeleaf-verslaving uit de video
Hier is de link naar de Thymeleaf afhankelijkheid in de Maven repository.
Maar wat gebeurt er als je deze aanpak niet volgt?
Eigenlijk gebeurt er technisch gezien niets. Zelfs als je alle bedrijfslogica in de controller schrijft, daar verbinding maakt met de database en het antwoord naar de client vanaf dezelfde plek retourneert, zal alles hetzelfde werken.
Echter, je zult je waarschijnlijk niet meer herinneren wat je daar hebt geschreven na een paar weken, omdat alle applicatielogica op één plek staat, wat uitermate onhandig is.
Samenvatting
De drie-lagenarchitectuur biedt een duidelijke scheiding van verantwoordelijkheden tussen de lagen van controllers, services en repositories, waardoor het ontwikkelproces meer gestructureerd en beter onderhoudbaar wordt.
Elke laag richt zich op zijn specifieke taak, wat zowel de workflow als het projectbeheer vereenvoudigt.
Bedankt voor je feedback!