Spring Data Lovelace RC1 可用

发布 | Mark Paluch | 2018 年 7 月 26 日 | ...

我谨代表 Spring Data 团队高兴地宣布 Lovelace RC1 版本现已可用。第一个发布候选版本基于刚刚发布的 Spring Framework 5.1 RC1,并为即将发布的 Spring Boot 2.1 M1 版本做准备。

此发布候选版本修复了 194 个问题,包含以下重要变更

  • 支持不可变对象。
  • 升级 MongoDB 的 Querydsl 以使用 Document API,允许您发布生命周期事件和参与托管事务。
  • 对 Apache Cassandra 的反应式 Slice 查询支持。
  • Apache Cassandra 的 Kotlin 扩展。
  • 对 Redis 的反应式 SCAN 支持。

不可变对象支持允许在 Spring Data 中使用真正的不可变对象,而不会受到反射访问的干扰。此前,如果不可变对象受到 ID 生成、审计或乐观锁定的影响,它们可能会发生变化。这些操作会在原地改变实体,从而导致实际不可变对象发生变化。

从本版本开始,不可变对象支持确保不可变实体不会被更改。insertsave 方法返回与变更(例如生成的 ID)相关联的对象新实例。此更改要求您的代码重新编译,因为方法返回类型已更改。不可变对象支持需要在应用程序代码中具有相应的数据模型

  • 使用 Kotlin 数据类来利用 .copy(…) 方法
  • 暴露 with... 方法的值对象

with... 方法创建一个对象的新实例,该新实例包含所有先前的属性值,并具有 with… 属性的更改值,如下例所示

class Person
{
  private final @Id String id;
  private final String name;
  
  private Person(String id, String name) {
    // …
  }
  
  // …
  
  Person withId(String id) {
   return new Person(id, this.name);
  }
}

Lombok 用户可以使用 @Value@Wither 注解来遵循 with... 模式。

Spring Data MongoDB、Apache Cassandra、Couchbase、ElasticSearch、Redis、KeyValue、Neo4j(审计)和 Spring Data REST 模块均支持不可变对象。JPA 不支持不可变对象,因为映射层位于 JPA 实现内部。Neo4j 不支持带有双向关联的完全不可变对象。JDBC 的不可变对象支持将在 Lovelace RC2 中提供。

我们的目标是在 8 月底发布 Lovelace RC2,并在 9 月中旬发布 GA 版本,正好赶上今年的华盛顿特区 SpringOne Platform 大会。

以下是所有详细信息、文档和更新日志的链接

获取 Spring 新闻简报

订阅 Spring 新闻简报,保持联系

订阅

先人一步

VMware 提供培训和认证,助您加速进步。

了解更多

获取支持

Tanzu Spring 通过一项简单的订阅提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看全部