Suchen mit Spring Data JPA Specification

Durch den Einsatz von Spring Data JPA in eigenen Projekten können Datenbankaktionen sehr einfach mit Hilfe von Repository Interfaces umgesetzt werden. Alle Zugriffe auf die Entitäten erfolgen über Methoden dieser Schnittstellen. Mit diesen vordefinierten Zugriffsmethoden und der Möglichkeit eigene Zugriffsmethoden zu deklarieren ist ein Großteil der üblichen Anwendungen abgedeckt. Einziger Nachteil dieser Methoden ist ihre feste Definition. Ein alternativer Ansatz, um die Suchen dynamisch zu generieren, verwendet die Schnittstelle Specification.

Eigene Spring Boot Kafka Anwendungen

Im ersten Kafka Beitrag ging es um die generelle Arbeitsweise und Architektur des Systems. In diesem Beitrag um die Integration in eigene Spring Boot Anwendung. Dieser Beitrag wird recht kurz, weil die Integration tatsächlich sehr einfach ist.

Datumsvalidierung mit Zeitfenstern

Der Bean Validation 2.0 (JSR380) Framework nimmt dem Java Entwickler viel Arbeit ab. Die Prüfung auf valide Daten reduziert sich mittlerweile auf einige Annotationen an den zu prüfenden Konstrukten. Auch im Bereich der Datumsprüfungen gibt es reichlich Unterstützung. Aber manchmal kann es ein wenig mehr sein.

Validieren mit zwei Unbekannten

Mit Spring Boot können eigene REST Services schnell erstellt werden. Die dabei notwendige Validierung der Parameter ist mit dem Bean Validation Framework (JSR 380) auch in Windeseile hinzugefügt. Manchmal ist es aber notwendig verschiedene Parameter gegeneinander zu prüfen, dann reichen die Standardwerkzeuge nicht mehr aus und eigene Validatoren müssen erstellt werden. Anhand eines kleines Beispiel zeigt dieser Beitrag, wie einfach das geht.

Kafka – Nuts and Bolts

Wer sich mit Micro Services und insbesondere mit dem Thema Event-Driven Microservice Architecture beschäftigt, wird um Apache Kafka nicht herumkommen. Bei Apache Kafka handelt es sich um ein überaus populäres Publish/Subscribe Messaging System, das bei vielen namhaften Firmen und Organisationen verwendet wird.

Unit Tests mit dem Spring Boot WebClient

Der Spring Boot WebClient ist der reaktive, nicht blockierende Alternative zum RestTemplate. Obwohl der WebClient für die Anwendung in reaktiven Anwendungen entworfen wurde, kann er auch in klassischen Anwendungen das RestTemplate ersetzen. Insbesondere die moderne Implementierung und die Fluent API sind es, die den Software Entwickler die Entscheidung für den WebClient leicht machen. Obwohl die Fluent API des WebClient ein Segen für die Entwicklung ist, stellt sie einen Fluch für die Unit Tests da.

Spring Boot Validation Cheat Sheet

Wer sich jedes Mal fragt, wie die ganzen Validierungsannotationen heißen und bei welchen Java Typen sie verwendet werden dürfen, kann jetzt aufatmen. Hier kann man einen Spickzettel herunterladen.

Spring Boot und Liquibase

Es existiert kaum ein Software Projekt in dem nicht irgendwelche Daten in einer Datenbank gespeichert werden. Solange sich das Projekt im Entwicklungsstatus befindet sind vielfache Änderungen am Datenbankschema kein Problem. Gerade bei der Entwicklung mit Datenbankabstraktionen wie Hibernate oder JPA machen sich Entwickler wenig Gedanken, weil das Framework sich um die Aktualisierung des Schemas kümmert. Spätestens wenn die Software in Produktion verwendet wird, ändert sich dieser gedankenlose Umgang mit den Datenbankstrukturen.

Korrekturlesen bei SpringDoc-OpenAPI

Die Bibliothek SpringDoc-OpenAPI ist ein gute Ergänzung für die eigene REST API, um die Endpunkte mit einer Dokumentation zu versehen. Die Bibliothek analysiert die @RestController annotierten Klassen und extrahiert Informationen zu Endpunkten, Parametern, Requests, Responses und Fehlercodes. Die gefundenen Informationen werden als OpenAPI Dokumentation im YAML oder JSON Format ausgegeben. Das klingt sehr gut, nur leider funktioniert es nicht ohne zusätzliche Eingriffe der Entwickler.

Enum Sets in JPA Entities speichern

Wer ein Attribut in seiner Entity speichern möchte, das ein Set von Enum Werten enthält, kann dies in JPA sehr einfach realisieren. Manchmal fragen einen die Kollegen dann aber doch, ob es nicht andere Wege gibt, ohne eine zusätzliche Tabelle zu verwenden.