Spring Boot + PostgreSQL

Spring Boot ist eine tolle Sache! Innerhalb von wenigen Minuten und nur ein paar Zeilen Code ist eine lauffähige Anwendung als JAR Datei verfügbar. Wenn man möchte sogar mit REST und einer Datenbank.
In diesem Tutorial zeige ich wie man Spring Boot mit einer PostgresDB zum laufen bringt.

Voraussetzungen:
Java 8+
mvn 3+
– ggf. docker

1. GIT repository auschecken:
Den kompletten Code gibt es zum ausprobieren auf GIT.

git clone https://github.com/mastersimon/spring-boot-postgres-rest-sample.git

Ein paar erläuternde Worte zu ein, zwei Dateien.
Ich möchte an dieser Stelle nicht erklären wie Spring Boot arbeitet, jedoch die zum Verständnis zum Zusammenspiel zwischen Spring Boot und Postgres verwendeten Details aufzeigen.

*application.properties*
In der application.properties Datei müssen die Basisinformationen zur Datenbank hinzugefügt werden. Dazu gehören wie üblich die url, der username und das password. Die url besteht in diesem Fall aus meiner docker IP sowie der angelegten Datenbank itblogging.

spring.datasource.url= jdbc:postgresql://192.168.99.100:5432/itblogging
spring.datasource.username=postgres
spring.datasource.password=itblogging

*PersonRepository*
Das PersonRepository wird um das CrudRepository erweitert. Es bietet alle Basisfunktionalitäten wie speichern, lesen, aktualisieren und löschen. Das sollte zur Veranschaulichung in diesem Beispiel reichen. Eine Implementierung ist nicht notwendig, das ist Teil der Spring magic.

*Person*
Das Domain Objekt Person muss mit @Entity versehen werden. Für die ID kommen zusätzlich die Annotations @Id und @GeneratedValue(strategy = GenerationType.IDENTITY) hinzu.

2. PostgresDB installieren
Entweder ihr habt bereits eine Postgres Datenbank lokal oder auf irgendeinem Server am laufen, oder aber ihr installiert eine frische Version direkt von der offiziellen Postgres Homepage. Alternativ, wie auch in diesem Beispiel, nutzt man einen PostgresDB Docker Container. Ein­fach­heits­hal­ber habe ich die Docker Lösung verwendet:

docker run --name postgres -e POSTGRES_PASSWORD=itblogging -p 5432:5432 -d postgres:9.5

3. Die Sprint Boot App starten

mvn spring-boot:run

Die Anwendung läuft jetzt unter http://localhost:8080.

4. Alle Personen abfragen
Durch das init Script *import.sql* im resources Verzeichnis, existiert bereits eine Person – James Bond.

curl -X "GET" "http://localhost:8080/persons"

5. Eine Person hinzufügen

curl -X "POST" "http://localhost:8080/persons" \
    -H "Content-Type: application/json" \
    -d $'{
    "first_name":"Simon",
    "last_name":"Michel"
}'

6. Eine Person aufrufen

curl -X "GET" "http://localhost:8080/persons/1"

7. Eine Person aktualisieren

curl -X "PATCH" "http://localhost:8080/persons/1" \
    -H "Content-Type: application/json" \
    -d $'{
    "first_name":"Simoooon",
    "last_name":"Micheeeeeel"
}'

8. Eine Person löschen

curl -X "DELETE" "http://localhost:8080/persons/1" \
    -H "Content-Type: application/json" \
    -d $'{
    "first_name":"Simoooon",
    "last_name":"Micheeeeeel"
}'