In diesem Projekt wird die Persistenzschicht durch das `repository`-Paket verwaltet. Dieses Paket enthält die Datenzugriffsschicht-Interfaces, die mit der Datenbank interagieren. Diese Interfaces erweitern die Spring Data JPA Repositories und die CRUD-Operationen.
Hier ist ein Beispiel für ein Repository-Interface:
-**`PostRepository`**: Dieses Interface erweitert `JpaRepository` und bietet CRUD-Operationen für `Post`-Entitäten.
-
Die Persistenzschicht ist somit für die Verwaltung der Datenbankoperationen verantwortlich und ermöglicht eine saubere Trennung der Geschäftslogik von den Datenzugriffsoperationen.****
## Schnittstelle
## Schnittstelle
In diesem Projekt sind die Schnittstellen wie folgt umgesetzt:
-**CRUD-Operationen über externe Schnittstelle bereitgestellt**: Die `AuthController`-Klasse bietet CRUD-Operationen über REST-APIs an. Es werden HTTP-Verben verwendet (`@PostMapping` für `login`, `register` und `logout`). Die entsprechenden HTTP-Status-Codes werden ebenfalls zurückgegeben (`200 OK`, `201 Created`, `400 Bad Request`, `401 Unauthorized`, `500 Internal Server Error`).
-**Dokumentation der Schnittstelle**: Die Schnittstellen sind mit Swagger-Dokumentation versehen. Jede Operation ist mit `@Operation` und `@ApiResponses` annotiert, um die Funktionalität und die möglichen Antworten zu beschreiben.
-**Synchronität der Schnittstellen**: Die Schnittstellen sind synchron, da die Methoden in den Controllern direkte Antworten (`ResponseEntity`) zurückgeben, nachdem sie die Anfragen verarbeitet haben.
Hier ist ein Beispiel für die Dokumentation einer Schnittstelle:
```java
@PostMapping("/login")
@Operation(summary="Authenticate a user",description="Authenticates the user with their username and password and returns a JWT token if successful.")