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 社区中所有即将举行的活动。

查看全部