[[new-features]]
= New & Noteworthy

This chapter summarizes changes and new features for each release.

[[new-features.3-2-0]]
== What's new in Spring Data for Apache Cassandra 3.2

* <<cassandra.template.prepared-statements,Support for prepared statements>> using `CassandraTemplate` and repositories (enabled by default).
* `@Column` and `@Element` can be used on constructor arguments.
* Schema support for static columns through `@Column(isStatic = …)`.

[[new-features.3-1-0]]
== What's new in Spring Data for Apache Cassandra 3.1

* <<cassandra.auditing,Reactive auditing>> enabled through `@EnableReactiveCassandraAuditing`. `@EnableCassandraAuditing` no longer registers `ReactiveAuditingEntityCallback`.
* Reactive SpEL support in `@Query` query methods.
* Configuration of the keyspace per `Statement` through `CqlTemplate` and `QueryOptions`.
* Revised `CqlOperations` with new `queryForStream(…)` methods returning a `Stream` with transparent pagination.
* `DataClassRowMapper` to map Cassandra results to data classes via constructor creation/bean properties.

[[new-features.3-0-0]]
== What's new in Spring Data for Apache Cassandra 3.0

* Upgrade to Cassandra Driver version 4. See the <<cassandra.migration.2.x-to-3.x,2.x to 3.x migration guide for details>>.
* Support for `NamingStrategy`.
* Support for frozen collections and UDT columns in schema creation.
* Support for <<mapping.embedded-entities,`@Embedded` properties>>.

[[new-features.2-2-0]]
== What's new in Spring Data for Apache Cassandra 2.2

* Filter conditions for lightweight transaction update and delete (`UPDATE … IF <condition>`, `DELETE … IF <condition>`).
* Optimistic Locking support.
* Auditing via `@EnableCassandraAuditing`.
* Lightweight transaction support via `DeleteOptions` using the Template API.
* Support for derived `Between` queries.
* Query derivation for <<cassandra.repositories.queries.delete,`DELETE` queries>>.
* <<kotlin.coroutines, Kotlin Coroutines support>> for `ReactiveFluentCassandraOperations`.
* Idempotency support in `@Query` annotation.
* Read-only properties annotated with `@ReadOnlyProperty` to exclude non-writable properties from entity-bound `INSERT` and `UPDATE` operations.

[[new-features.2-1-0]]
== What's new in Spring Data for Apache Cassandra 2.1

* New annotations for `@CountQuery` and `@ExistsQuery`.
* Template API extended with `count(…)` and `exists(…)` methods accepting `Query`.
* <<cassandra.template.query.fluent-template-api,Fluent API>> for CRUD operations.
* Cassandra Mapped Tuple support via `@Tuple`.
* Support for Cassandra `time` columns via `LocalTime`.
* Support for `map` columns using User-defined/converted types.
* <<cassandra.mapping-usage.events>>.
* Kotlin extensions for Template API.
* Reactive Paging support through `Mono<Slice<T>>`.

[[new-features.2-0-0]]
== What's new in Spring Data for Apache Cassandra 2.0

* Upgraded to Java 8.
* <<cassandra.reactive,Reactive Apache Cassandra support>>.
* Merged `spring-cql` and `spring-data-cassandra` modules into a single module and re-packaged `org.springframework.cql`
to `org.springframework.data.cassandra`.
* Revised `CqlTemplate`, `AsyncCqlTemplate`, `CassandraTemplate` and `AsyncCassandraTemplate` implementations.
* Added routing capabilities via `SessionFactory` and `AbstractRoutingSessionFactory`.
* Introduced `Update` and `Query` objects.
* Renamed CRUD _Repository_ interface: `CassandraRepository` using `MapId` is now renamed to `MapIdCassandraRepository`.
`TypedIdCassandraRepository` is renamed to `CassandraRepository`.
* <<cassandra.repositories.queries,Pagination>> via `PagingState` and `CassandraPageRequest`.
* Interface and DTO projections in Repository query methods.
* Lightweight transaction support via `InsertOptions` and `UpdateOptions` using the Template API.
* <<cassandra.repositories.queries.options,Query options>> for Repository query methods.
* Introduced new annotation for `@AllowFiltering`.
* Index creation on application startup via `@Indexed` and `@SASI`.
* Tooling support for null-safety via Spring's `@NonNullApi` and `@Nullable` annotations.
* `java.util.UUID` properties default now to `uuid` column type, was previously `timeuuid`.

[[new-features.1-5-0]]
== What's new in Spring Data for Apache Cassandra 1.5

* Assert compatibility with Cassandra 3.0 and Cassandra Java Driver 3.0.
* Added configurable `ProtocolVersion` and `QueryOptions` on `Cluster` level.
* Support for `Optional` as query method result and argument.
* Declarative query methods using query derivation
* Support for User-Defined types and mapped User-Defined types using `@UserDefinedType`.
* The following annotations enable building custom, composed annotations:  `@Table`, `@UserDefinedType`, `@PrimaryKey`,
`@PrimaryKeyClass`, `@PrimaryKeyColumn`, `@Column`, `@Query`, `@CassandraType`.

