Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Spring Data JPA - Das Schweizer Taschenmesser für den Datenzugriff

Mischok
December 15, 2021

Spring Data JPA - Das Schweizer Taschenmesser für den Datenzugriff

Spring Data JPA ist seit vielen Jahren Standard in vielen Applikationen.

Die Konzepte von JPA werden konsequent und spring-getreu weiter vereinfacht und bieten eine sehr gute Developer-Experience. Insbesondere für Einsteiger ist es aber nicht immer einfach festzustellen, welcher Weg des Datenzugriffs sich im konkreten Fall anbietet:

Reichen mir die Repository Interface Methoden oder benötige ich die Criteria API?

Gibt es überhaupt eine Möglichkeit, meine Anfrage per Code zu formulieren oder muss ich doch JPQL oder sogar eine native Query verwenden?

Und vor allem: Wie setze ich all das um?

Neben der Vorstellung verschiedener Zugriffsmöglichkeiten werden Entscheidungsregeln diskutiert um im konkreten Anwendungsfall die passende Lösung zu identifizieren.

Julius Mischok ist CTO der Mischok GmbH in Augsburg. Seine Schwerpunkte sind Prozessentwicklung und das coachen und unterstützen der Entwicklungs-Teams. Derzeit liegt der Fokus seiner Arbeit darauf, herauszufinden, wie Softwareproduktion mit einem maximalem Wertgewinn für den Kunden aussehen kann. Er studierte Mathematik und programmiert seit fast 20 Jahren Java. Mit seiner Expertise arbeitete er in Projekten für BMW, Audi, Hilti, Porsche, Allianz, Bosch und vielen anderen.

Checkt auch den Host der JUG Augsburg: www.mischok.de und den Spring Boot Blog: www.spring-boot-blog.de

Du willst Programmieren lernen? Schau bei der Mischok Academy vorbei: www.mischok.academy

Mischok

December 15, 2021
Tweet

More Decks by Mischok

Other Decks in Technology

Transcript

  1. Julius Mischok — Gründer und Geschäftsführer Mischok GmbH — Java

    seit zwei Jahrzehnten — Qualitäts- und Nachhaltigkeitsfanatiker
  2. Query Methods Nachteile: — Methoden-Monster — Nicht refactoring-sicher — Begrenzte

    Möglichkeiten Vorteile: — Intuitives Arbeiten — Schlank
  3. JPQL Nachteile: — Kein Check zur Compilezeit — JPQL ist

    kein SQL Vorteile: — Großer Funktionsumfang — JPQL ist kein SQL ;-)
  4. Query By Example Nachteile: — Nur teilweise zur Compilezeit gecheckt

    — Außer für Strings nur Prüfung auf Gleichheit — Verwirrende Doppelnutzung von Entitys Vorteile: — Transparente, schlanke API — Gutes Verhältnis von Nutzen zu Komplexität
  5. Specifications Nachteile: — Sehr komplex — Kein unmittelbarer Zugriff auf

    die gesamte Query Vorteile: — Mächtig! — Wiederverwendbarkeit
  6. Entscheidungshilfe Query Methods JPQL QBE Specifications Eigenschaften einer Entity auswerten

    Gut geeignet Geeignet Geeignet, insb. für Strings Überdimensioniert Abfrage eingebetteter Entities Gut geeignet Geeignet Geeignet, insb. für Strings Überdimensioniert Subqueries, Abfrage eingebetteter Listen Nicht möglich Gut geeignet Nicht möglich Geeignet Optionale Parameter in der Query, Variable Parameterzahl Ungeeignet Ungeeignet Geeignet, insb. für Strings Gut geeignet
  7. QueryDsl und jOOQ List<Person> persons = queryFactory .selectFrom(person) .where( person.firstName.eq("John"),

    person.lastName.eq("Doe")) .fetch(); create.select(BOOK.TITLE) .from(BOOK) .where( BOOK.PUBLISHED_IN.eq(2011) ) .orderBy(BOOK.TITLE)
  8. Vielen Dank! — www.mischok.de — www.facebook.com/mischok.de/ — www.xing.com/companies/ mischokgmbh —

    www.linkedin.com/company/ 40865736 — www.meetup.com/de-DE/Java-User- Group-Augsburg/ _