Sonntag, Januar 27, 2019

Spring Data Jdbc

SpringJDBCData.md

Es gibt einen neuen Ansatz zur Lösung der Persistenz Problematik:

Spring Data JDBC

Der Ansatz orientiert sich weg von schwergewichtigen Persistenzlösungen wie Hibernate, EclipseLink oder allgemein von JPA. Im Mittelpunkt steht das sogenannte Aggregat, eine Idee von Eric Evans, dem Miterfinder des Domain-Driven-Designs. Das Aggregat umfasst verschiedene (Java-) Objekte oder Entities, die eine gemeinsame fachliche Domäne teilen. Ein weiteres Kennzeichen ist der gemeinsame Lebenszyklus dieser Entities. Den Einstiegspunkt in das Aggregat nennt man die Aggregat-Wurzel.

Das Aggregat bildet also einen abgeschlossenen, fachlichen Objektbaum. Das Repository setzt eine persistente Klammer um das Aggregat. Die Methoden des Repository nehmen die Aggregat Wurzel als Objekt entgegen, aktualisieren das Aggregat gegen die Datenbank oder liefern dieses als Ergebnis eines Finder-Aufrufs zurück.

Die Fachlichkeit, die auf das Aggregat zugreift, verwendet die aus Spring Data bekannten Repositories. D.h. man definiert ein Interface und Spring generiert an Hand der Methodensignaturen die passenden SQL Abfragen.

Die interessantesten Eigenschaften kurz zusammengefasst:

  • In Spring Data JDBC gibt es keine impliziten Transaktionsgrenzen. D.h. der aufrufende Code ist für das sinnvolle setzen von Commits und Rollbacks zuständig.
  • Kein Lazy Loading. Wenn eine Entity per SQL geladen wird, ist sie mit allen abhängigen Entities geladen.
  • Es gibt keine Sessions und kein ‘Dirty’ Flag der Entity, die entscheiden, wann eine Entity gespeichert wird.

Links und noch mehr Links…

AssertJ und java.util.List

AssertJ hat eine praktische Möglichkeit, Listen in JUnit Tests abzuprüfen. Insbesondere, wenn in der Liste komplexe Objekte abgelegt sind, s...