Skip to content

Release Train 2022.0 (Turing) Release Notes (Preview)

Mark Paluch edited this page Apr 20, 2022 · 18 revisions

General Themes

  • Upgrade to Java 17 baseline

  • Upgrade to Spring Framework 6

  • Upgrade to Jakarta EE 9

  • Refine repository interface arrangement

  • Merge of Spring Data Envers into Spring Data JPA repository

  • Merge of Spring Data R2DBC into Spring Data Relational repository

Participating Modules

Details

New and Noteworthy

Spring Data Commons - 3.0

Upgrade Java baseline to Java 17

Spring Data now requires Java 17 as baseline. All code is being compiled using Java 17 bytecode.

Upgrade Jakarta baseline to Jakarta EE 9.

Spring Data now compiles against Jakarta EE 9 and the jakarta. packages instead of javax. (e.g. jakarta.persistence instead of javax.persistence).

New CRUD repository interfaces that return List instead of Iterable

Spring Data offers new variants of the CRUD repositories. These return a List for methods that return multiple entities:

  • ListCrudRepository

  • ListQuerydslPredicateExecutor

  • ListQueryByExampleExecutor

They can be used as a drop in replacement for the interfaces of same name but without the List prefix.

Sorting repositories no longer inherit from CRUD repositories.

Sorting repositories no longer extend their respective CRUD repository. If one requires the old behaviour one must extend not only the sorting repository, but also the respective CRUD repository explicitly. This was done so the sorting support can easily be combined with the List repositories introduced above.

The affected interfaces are:

  • PagingAndSortingRepository no longer extends CrudRepository

  • ReactiveSortingRepository no longer extends ReactiveCrudRepository

  • CoroutineSortingRepository no longer extends CoroutineCrudRepository

  • RxJavaSortingRepository no longer extends RxJavaCrudRepository

Removal of Joda Time and ThreeTenBackport support

Joda Time and ThreeTenBackport are no longer supported for temporal type conversions and general operations such as auditing. Please use Java’s built-in JSR-310 time types from the java.time package.

Removal of RxJava 1 and 2 support

RxJava 1 and 2 types are no longer supported when declaring reactive repository declarations. Please use either Project Reactor of RxJava 3 instead.

Removal of deprecated public API

API that was removed:

  • EntityInstantiator in the o.s.d.convert package. Use the entity instantiators in the o.s.d.mapping.model as replacement.

  • PageableExecutionUtils in the o.s.d.repository.support package. The utility was moved into the o.s.d.support package.

  • Removal (or encapsulation) of various deprecated methods or constructors, such as Lazy constructor, methods on ReactiveWrappers and others.

Spring Data JPA - 3.0

ignoreCase operators now use lower() functions across the board

When you use an ignoreCase operator, whether that’s with standard finders, JSqlParser, Querydsl, or Query by Example, all will lower the selected column, so you only need to maintain one index. If you currently have an index built for upper, you can either remove it or replace it with a proper one.

Spring Data Relational - 3.0

Spring Data MongoDB - 4.0

Revise MongoTemplate Stream API

Methods on the MongoTemplate API allowing streaming-oriented result consumption for find and aggregate operations now return a Java 8 Stream to simplify result consumption as a stream. Previously, these methods returned CloseableIterator. Note that the returned Stream must be closed so consumption with try-with-resources can be used in these cases:

try (Stream<Person> stream = mongoTemplate.stream(query, Person.class)) {
  // consume stream
}

Spring Data Neo4j - 7.0

Impersonation

Spring Data Elasticsearch - 5.0

Spring Data Couchbase - 5.0

Spring Data for Apache Cassandra - 4.0

Spring Data for Apache Geode - 3.0

Spring Data Redis - 3.0

Spring Data KeyValue - 3.0

Spring Data REST - 4.0

Spring Data LDAP - 3.0

Release Dates

  • M1 - Jan 14, 2022

  • M2/M3 - Mar 18, 2022

  • M4 - May 13, 2022

  • M5 - Jul 14, 2022

  • M6 - Sept 16, 2022

  • RC1 - Oct 14, 2022

  • GA - Nov 18, 2022

  • OSS Support until: tbd

  • End of Life: tbd.

Clone this wiki locally