Читать книгу Spring Boot - Mark Heckler - Страница 49

Das Repository

Оглавление

Nachdem Coffee nun als gültige JPA-Entität definiert ist, die gespeichert und abgerufen werden kann, wird es Zeit, die Verbindung zur Datenbank herzustellen.

Obwohl es sich eigentlich um ein ganz einfaches Konzept handelt, war das Konfigurieren und Herstellen einer Datenbankverbindung im Java-Ökosystem sehr lange eine ziemlich umständliche Angelegenheit. Wie in Kapitel 1 erwähnt, verlangte der Einsatz eines Application-Servers zum Ablegen einer Java-Anwendung von den Entwicklern die Durchführung mehrerer mühsamer Schritte, um überhaupt einmal auf den richtigen Weg zu kommen. Sobald Sie begonnen hatten, mit der Datenbank zu interagieren oder wenn Sie einen Datenspeicher direkt aus einem Java-Programm oder einer Client-Anwendung heraus angesprochen hatten, mussten Sie zusätzliche Schritte unternehmen, bei denen die PersistenceUnit-, Entity ManagerFactory- und EntityManager-APIs (und möglicherweise DataSource-Objekte) zum Einsatz kamen, die Datenbank geöffnet und geschlossen werden musste und Weiteres. Für Routineaufgaben der Entwickler waren also zahlreiche sich wiederholende Abläufe erforderlich.

Spring Data führt das Konzept der Repositories ein. Ein Repository ist eine Schnittstelle, die in Spring Data als nützliche Abstraktion über den verschiedenen Datenbanken definiert ist. Es gibt noch andere Mechanismen zum Zugriff auf Datenbanken aus Spring Data heraus, die in nachfolgenden Kapiteln erklärt werden, doch in den meisten Fällen sind die verschiedenen Ausprägungen von Repository ganz zweifellos am nützlichsten.

Repository selbst ist nur ein Platzhalter für die folgenden Typen:

 das Objekt, das in der Datenbank gespeichert ist

 die eindeutige ID/das Primärschlüssel-Feld des Objekts

Natürlich gibt es über Repositories noch viel mehr zu sagen, und ich behandele einen Großteil davon in Kapitel 6. Im Augenblick wollen wir uns auf die zwei konzentrieren, die für unser aktuelles Beispiel direkt relevant sind: CrudRepository und JpaRepository.

Erinnern Sie sich, dass ich die bevorzugte Praxis erwähnt habe, Code so zu schreiben, dass die höchstmögliche geeignete Schnittstelle verwendet wird? Während JpaRepository eine Handvoll von Schnittstellen bereithält und damit eine breitere Funktionalität erlaubt, deckt CrudRepository alle entscheidenden CRUD-Fähigkeiten ab und ist ausreichend für unsere (bisher) einfache Anwendung.

Um Repository-Unterstützung für unsere Anwendung zu aktivieren, muss als Erstes eine Schnittstelle speziell für unsere Anwendung definiert werden, indem eine Spring-Data-Repository-Schnittstelle erweitert wird:

interface CoffeeRepository extends CrudRepository<Coffee, String> {}

Die zwei definierten Typen sind der zu speichernde Objekttyp und der Typ seiner eindeutigen ID.

Dies stellt den einfachsten Ausdruck der Repository-Erstellung innerhalb einer Spring-Boot-Anwendung dar. Es ist möglich und manchmal auch ganz sinnvoll, Abfragen für ein Repository zu definieren; auch darauf werde ich in einem späteren Kapitel eingehen. Doch hier ist der »magische« Teil: Spring Boots Autokonfiguration berücksichtigt den Datenbanktreiber auf dem Klassenpfad (in diesem Fall H2), die in unserer Anwendung definierte Repository-Schnittstelle und die JPA-Klassendefinition Coffee und erzeugt in Ihrem Auftrag eine Datenbank-Proxy-Bean. Es ist nicht nötig, für jede Anwendung immer wieder die fast gleichen Zeilen zu schreiben, wenn die Muster so klar und konsistent sind. Die Entwicklerin kann sich stattdessen darum kümmern, an neuen, wichtigen Funktionen zu arbeiten.

Spring Boot

Подняться наверх