Verbeter je Software Architecture met het Repository Pattern

<Het repository Pattern>

Om infinite velocity in software ontwikkeling te bereiken is een moderne loosely-coupled software architectuur een vereiste. In deze blog behandelen we het repository pattern. Het repository pattern is een design pattern dat je in een software architectuur gebruikt om onafhankelijk te blijven van het type data store.

De vraag die we in dit artikel behandelen is waarom we het repository pattern implementeren en wat de voordelen zijn van het repository pattern in een moderne software architectuur.

Auteur:

Kenniscentrum Cloud Software Engineering

Lead Cloud Software Engineering

<Wat is het repository pattern?>

Martin Fowler beschrijft het repository pattern in zijn boek ‘Patterns of Enterprise Architecture’, als volgt: “The repository pattern mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.”.

Vrij vertaald staat er dat het repository design pattern is bedoeld om de koppelingen naar gegevensbronnen te abstraheren. Het repository pattern zorgt dat de business logica geen weet hoeft te hebben van de gebruikte databronnen en hoe deze databronnen te benaderen.  De business logica is niet afhankelijk van specifieke frameworks en libraries om toegang tot de data te verkrijgen. In de weergave hieronder zie je de plaatsing van het repository pattern in de software architectuur.

Model van een software architectuur, waarin het repository patroon word toegepast tussen de Application Layer en de Database Layer. Tussen het Repository patroon en de Application Layer loopt een zijweg richting de Domain Model Objects.

<Hoe werkt het Repository Pattern?>

De werking van het repository pattern kan je zien als een set van objecten in geheugen. Met deze set hou je bij welke data er gewijzigd, toegevoegd of verwijderd is. De wijzigingen worden door de repository bijgehouden en zullen als eenmalige actie de databron aanpassen. Hierdoor vermindert de communicatie tussen de business laag en de databron.

Het gebruik van Repository Pattern zorgt ook voor een scheiding van de business logica en toegang tot databronnen. De business logic heeft geen weet van hoe en waar data is opgeslagen. Het voorkomt dat de business logica specifieke frameworks om de data te benaderen bevat. 

Door gebruik te maken van het repository pattern zorg je dat alle logica voor datatransacties op één plek zit. Je voorkomt hiermee ook veel duplicate code. Het repository pattern zorgt er voor dat de business logica losgekoppeld is van de databron. Deze ontkoppeling maakt het eenvoudiger om een databron te vervangen door een andere. 

Daarmee draagt het ontwerp bij aan het Dependency Inversion Principle, Loosely Coupling en Clean Architecture.

<De implementatie van het pattern>

Het repository pattern bestaat uit een Interface class en de implementatie van deze interface. De Interface class definieert de acties op de repository. De Implementatie van deze interface bevat de logica om te kunnen communiceren met een databron, of eventuele afhankelijkheden naar andere classes die deze logica bevatten.

Het EntityFramework wordt in de Microsoft stack veel gebruikt als Repository Pattern. Indien je het Entity framework gebruikt om een repository te implementeren gebruik je een DBSet(s) om de wijzigingen bij te houden en DBContext om de data te persisteren. Belangrijk is dat de repository deze operaties heeft:

  • Ophalen van data
  • Toevoegen van data
  • Verwijderen van data

 

Het proces voor het updaten van data verloopt als volgt:

  1. De implementatie van het repository pattern haalt de data op
  2. De data wordt in een memorystructuur in de repository bijgehouden.
  3. De business logica wijzigt de data in de repository
  4. De repository herkent de wijziging
  5. De repository persisteert de wijzigingen naar de databron

<Samenvattend>

Het Repository Pattern is een pattern om de scheiding tussen business logica en persistentie logica te realiseren. Het pattern vergroot ook de testbaarheid van de software stack. 

Het voorbeeld toont aan dat Design Patterns bijdragen aan een moderne software architectuur voor wendbare en schaalbare applicaties. Het pattern past ook perfect in het Clean Architecture gedachtegoed.

Wil je meer weten over de software engineering trends voor 2023? Overweeg dan om ons laatste whitepaper te downloaden, of bezoek een van onze TechCafé’s. Binnenkort verschijnt een vervolg waarin ik uitleg hoe het repository pattern past in een clear architecture.