Suche
Der letzte seiner Art

Spring Data Ingalls: Neuer Release Train verfügbar

Dominik Mohilo

©Shutterstock.com / Tiggy Gallery!

Vor wenigen Tagen ist Spring Boot 1.5 erschienen und hatte bereits das aktuelle Update von Spring Data im Gepäck. Neben den 15 Modulen beinhaltet Spring Data Ingalls etliche Bugfixes und einige neue Features. Wir haben uns den neuen Release Train, der nach Daniel Henry Holmes Ingalls Jr. benannt ist, angesehen.

Mehr als 630 Tickets sind es am Ende, die für den neuen Release Train von Spring Data mit Namen Ingalls geschlossen wurden. Nachdem zwischen der Verreöffentlichung von Spring Data Hopper und Spring Data Ingalls acht Monate vergangen sind, soll das nächste Update, Spring Data Kay, bereits im zweiten Quartal dieses Jahres kommen.

Spring Data Ingalls schließt den seit fünf Jahren entwickelten Branch von Spring Data ab, Spring Data Kay soll den Beginn eines „Next Generation“ Versionszyklus‘ des Moduls für das Spring Framework einläuten. Von Ingalls wird es, wie immer, keinen Backport zu Hopper geben, stattdessen wird die Vorgängerversion nur noch einige wenige Updates für Spring Boot 1.4 Releases bekommen und schließlich auslaufen.

Was ist neu?

Neue (Kern-)Module

Die Grundlage für den aktuellen Release Train von Spring Data bildet das Spring Framework in Version 4.3, genauer: 4.3.6. Ingalls hat zudem ein neues Modul an Bord, das eigens für das Projekt Spring LDAP implementiert wurde, dessen Repositories bereits seit geraumer Zeit unterstützt werden. Da es in der Vergangenheit zu kleineren Fehlern und Inkompatibilitäten kam, wurde der LDAP Repository Support in einem eigenständigen Spring Data Modul zusammengefasst. Dadurch ist es auch enger mit dem Release Train verbunden.

Spring Data for Apache Cassandra wurde indes in den Kreis der Kernmodule von Spring Data aufgenommen. Dies bedeutet, dass das Modul ab sofort vom Spring Data Team bei Pivotal gewartet wird. Mit diesem Status-Update des Moduls ging eine komplette Überarbeitung einher, die ein Upgrade auf Cassandra 3 beinhaltete. Daher gibt es nun auch unter anderem User-definierte Typen und Unterstützung für die Java-8-Features Stream und Optional.

Verbesserte Performance

Um die Performance beim Object-to-store Mapping zu verbessern, wird zukünftig versucht, Reflections zu vermeiden. Stattdessen sollen MethodHandles für ASM-generierten Code genutzt werden. Auch die neue und verbesserte Fetching-Strategie soll für eine bessere Performance sorgen.

Neue Operatoren

In Spring Data Ingalls wurde dem Modul Spring Data MongoDB eine ganze Reihe neuer Operatoren für die Verknüpfung mit denen von MongoDB spendiert: 57 neue Aggregation-Operatoren und 6 Aggregation Stages wurden hinzugefügt. Bisher nicht unterstützte Operatoren oder Ausdrücke können durch die Implementierung von AggregationOperation oder AggregationExpression genutzt werden.

Da die Lesbarkeit des Codes durch die große Anzahl der Möglichkeiten bei der Implementierung von Operatoren oftmals leidet, wird für die Operatoren auch die Spring Expression Language (SpEL) unterstützt.

Vorher:

newAggregation(
  project()
    .and(ConditionalOperators.when(Criteria.where("a").gte(42))
      .then("answer")
      .otherwise("no-answer"))
      .as("deep-tought")
);

Nachher:

newAggregation(
  project()
    .andExpression("cond(a >= 42, 'answer', 'no-answer')")
    .as("deep-tought")
);

Die Module im Überblick

Die folgenden Module sind im Release Train Ingalls enthalten und liegen als GA-Version vor:

  • Spring Data Build 1.9
  • Spring Data Commons 1.13
  • Spring Data JPA 1.11
  • Spring Data KeyValue 1.2
  • Spring Data for Apache Cassandra 1.5
  • Spring Data for Apache Solr 2.1
  • Spring Data Gemfire 1.9
  • Spring Data Neo4j 4.2
  • Spring Data MongoDB 1.10
  • Spring Data LDAP 1.0
  • Spring Data Envers 1.1
  • Spring Data REST 2.6
  • Spring Data Redis 1.8
  • Spring Data Elasticsearch 2.1
  • Spring Data Couchbase 2.2

Weitere Informationen über den Spring Data Ingalls Release Train gibt es in der offiziellen Ankündigung von Oliver Gierke, dem Blog-Post Von Mark Paluch und auf GitHub.

Hintergrund

Jedes der zahlreichen Spring Data Unterprojekte hat früher noch sein eigenes Süppchen gekocht. Seit Ende 2012 sorgt ein gemeinsamer Release Train für die Koordination der Projekte. Grund für den gemeinsamen Release Train ist die Tatsache, dass es angesichts der verschiedenen Entwickler-Tempi in den Teilprojekten schwierig war, mehrere Module gemeinsam zu nutzen. Vor allem die vom Spring-Data-Commons-Projekt abhängenden Module können sich Dank Spring Data auf präzise getimete Release-Zeiten verlassen.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare
  1. efwe2017-02-01 13:52:20

    Hallo,

    Sehr schoener Ueberblick. Das mit der 'Reflexion' geht so aber nicht. Was versucht wird zu vermeiden, ist ist eine Technik mit dem Namen 'Reflection'. Das sollte hier eher als Eigenname kursiv auftauchen.

  2. Dominik Mohilo2017-02-01 13:54:52

    Hallo efwe,

    vielen Dank für den Einwand! Ich hab es angepasst ;)

    Liebe Grüße,
    Dominik

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.