Repository (Entwurfsmuster)
# Repository (Entwurfsmuster)

Repository ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung. Es dient als Schnittstelle zwischen der Domänenschicht und der Datenzugriffsschicht. Es ist insbesondere in den Situationen hilfreich, in denen es viele unterschiedliche Domänenklassen oder viele unterschiedliche Zugriffe auf die Datenzugriffsschicht gibt.
Konzeptionell kapselt das Repository die durch die Datenzugriffsschicht persistierten Objekte und den Zugriff auf sie – unabhängig davon, ob diese in einer Datenbank gespeichert, oder über einen Webservice (oder anderweitig) zur Verfügung gestellt werden. Damit wird ein objektorientierter Zugriff auf die Datenzugriffsschicht und somit eine klare Trennung und gerichtete Abhängigkeit zwischen der Domänenschicht und der Datenzugriffsschicht erreicht.

## Implementierung

Gegenüber der Domänenschicht verhält sich das Repository wie eine Liste von Fachobjekten. Fachobjekte können wie bei einer im Speicher befindlichen Liste hinzugefügt oder entfernt werden, das Repository kümmert sich um das Mapping und den Aufruf der entsprechenden Operationen der Datenzugriffsschicht. Darüber hinaus können mittels deklarativer Suchabfragen über das Repository Abfragen in der Datenzugriffsschicht abgesetzt werden. In diesen Fällen hilft der Einsatz des Repository-Entwurfsmusters die sonst notwendige mehrfache Implementierung der Suchlogik zu reduzieren.