Spring Boot Repository mit MongoDB
Nach dem wir nun gesehen haben wie man mit Spring Boot einen Rest Controller erstellt und diesen mit Postman anspricht sollten wir uns nun Gedanken machen wie wir die Daten im System hinterlegen wollen? Es gibt viele Wege und Arten Daten zu speichern. Die klassische Variante wäre es eine SQL Datenbank wie MariaDB zu verwenden. Ich möchte euch aber in meinem Tutorial zeigen wie ihr die Daten in einer MongoDB abspeichern könnt.
Spring Boot MongoDB

Spring Boot Repository mit MongoDB

Nach dem wir nun gesehen haben wie man mit Spring Boot einen Rest Controller erstellt und diesen mit Postman anspricht, sollten wir uns nun Gedanken machen wie wir die Daten im System hinterlegen wollen? Es gibt viele Wege und Arten Daten zu speichern. Die klassische Variante wäre es eine SQL Datenbank wie MariaDB zu verwenden. Ich möchte euch in meinem Tutorial zeigen, wie ihr mit Spring Boot Repository Klassen die Daten in einer MongoDB abspeichern könnt.

Da wir eine MongoDB verwenden möchten brauchen wir auch eine MongoDB Instanz. Hierzu habt ihr zwei Möglichkeiten.

  1. Ihr installiert euch auf eurem System eine MongoDB. Die Binaries könnt ihr hier runterladen
  2. Ihr verwendet einen Docker Container mit einer MongoDB, wie das geht zeige ich euch hier in dem Tutorial (In Bearbeitung)

Vorraussetzung:

  • Existierende Java 8 Installation
  • Existierende Maven 3 Installation
  • Existierende MongoDB Installation auf Port 2017
  • Grundkenntnisse in REST
  • Tutorial: Spring Boot Rest Controller

Damit unsere Applikation eine Verbindung mit der MongoDB aufbauen kann, müssen wir unsere POM aus dem Tutorial Spring Boot Rest Controller um eine weitere Spring Boot dependency erweitern.

Die o.g dependency bindet die Spring Data MongoDB libraries in unser Projekt ein.

Der folgende Codeblock zeigt die erweiterte POM:

Nach dem wir die dependency eingebunden haben, müssen wir in unsere Applikation um eine Konfigurationsdatei erweitern. Die zentrale Konfigurationsdatei für Spring Boot Applikationen ist die application.properties oder application.yml. Beide Konfigurationsdateien unterscheiden sich nur darin, dass die application.properties eine klassische Key/Value Datei ist und die application.yml eine YAML Datei. In meinen Tutorials werde ich stets die YAML Variante verwenden.

Damit wir eine application.yml anlegen können müssen wir erst einmal unser Projekt um ein Verzeichnis erweitern! Maven Projekte bieten uns die Möglichkeit unsere Konfigurationsdateien in das Verzeichnis „PROJEKT_HOME/src/main/resources“ abzulegen.

Spring Boot MongoDB Projektstruktur

Als nächstes müssen wir unserer Applikation mitteilen, unter welcher URL die lokale MongoDB Instanz zu finden ist. Hierfür erweitern wir die application.yml Datei um den folgenden Eintrag.

Die komplette YAMl Datei sollte wie folgt aussehen.

Nun haben wir das Konfigurative abgeschlossen. Jetzt ist es an der Zeit unser erstes Repository Interface zu erstellen. Repositories in Spring Boot sind Java Interfaces die von dem Interface „MongoRepository<T, ID>“ erben. Spring Data ist so aufgebaut, dass durch die Repository Interface Klassen die gängigsten Zugriffsmethoden bereits schon implementiert sind. Dies bedeutet für den Entwickler weniger Entwicklungsaufwand für CRUD Funktionalitäten. Der Entwickler kann sich ganz alleine auf die Businesslogik fokussieren.

Folgendes Codebeispiel zeigt unsere CustomerRepository.java Interface

Somit wären wir nun auch mit der Datenbankzugriffsschicht fertig. Wie man nun die Repository Klassen um weitere Methoden erweitert, werde ich in einem anderen Tutorial, welches sich nur um Spring Data widmen wird zeigen.

Im nächsten Schritt müssen wir noch unsere Model Klasse erweitern. Die Model Klasse muss um zwei Annotations erweitert werden.

Folgender Codeblock zeigt die erweiterte Model Klasse:

Nachdem wir nun auch die Model Klasse erweitert haben, werden wir nun unsere Repository Klasse in unseren bestehenden CustomerController injecten. Hierfür werden wir die Konstruktor Injection von Spring verwenden. Das bedeutet, dass wir die CustomerController.java Klasse um eine Property private CustomerResporitoy customerRepository erweitern, und diese dann über den Konstruktor initialisieren.

Folgender Codeblock zeigt die neue Implementierung des CustomerControllers.

Nun starten wir Postman und senden folgende POST Anfrage.

Wir wir sehen wurde unsere Post Anfrage mit einem CREATED vom Server beantwortet. Das bedeutet, dass der Kunde in der MongoDB gespeichert wurde. Um das zu kontrollieren rufen wir nun folgende GET URL auf: http://localhost:8080/customers. Das Ergebnis sieht ihr wie folgt.

Wir sehen beim Ergebnis vom POST Aufruf die selbe Id wie beim GET Aufruf. Somit handelt es sich um die gleichen Objekte. Abschließend riskieren wir einen Blick in die MongoDB. Hier sehen wir, dass Spring Data die Daten die gespeichert werden um eine „_id“ und „class“ angereichert hat.

In diesem Tutorial haben wir gesehen, wie man eine Repository Klasse anlegt um Daten in einer MongoDB zu speichern. Wir haben auch gesehen wie man einen bestehenden Spring Rest Controller erweitert, um eine Repository Klasse zu verwenden. Mit diesem Wissen kann man nun weitere Spring Boot Microservices aufbauen.

Ich hoffe euch hat mein Tutorial gefallen. Würde mich über Kritik, Anregungen und Vorschläge freuen. Solltet ihr eine spezielle Frage haben, dann schreibt einfach unten ein Kommentar.

Leave a comment

Diese Website verwendet Cookies. Durch die Nutzung unserer Services erklären Sie sich damit einverstanden, dass wir Cookies setzen. weitere Informationen

Diese Website verwendet Cookies. Durch die Nutzung unserer Services erklären Sie sich damit einverstanden, dass wir Cookies setzen.

Schließen