从旧版本升级

本页列出了驱动程序从 5.28 版本升级到 6.x 版本的新功能和重大变更。有关变更的完整列表,请参阅 驱动程序 → 变更日志 (Driver → Changelog)

6.x 系列的最新驱动程序版本兼容 Neo4j 4.4、5.x 和 202[56].x 服务器,因此您可以在升级服务器之前先升级驱动程序。同时,驱动程序 5.28 版本向前兼容 Neo4j 202[56].x 服务器,因此您也可以先升级服务器再升级驱动程序;但考虑到回滚应用程序升级比回滚服务器升级更容易,建议先从驱动程序开始。

当将 Neo4j 服务器升级到较新版本时,您应用程序中的 Cypher 查询也可能需要更新。
请参阅 Cypher → 弃用、新增与兼容性

新功能

值映射 (Value mapping)

通过 值映射功能,您可以声明一个包含查询预期返回值的规范的 Java Record,并要求驱动程序使用该类从查询结果中生成新对象。

新增 Vector 类型

Vector 类型允许在数据库中存储和检索 Cypher VECTOR 对象。VECTOR 类型适用于高效存储同构数字列表,例如嵌入(embeddings)。

异常中的 GQL 状态对象

异常对象现在还以 GQL 状态对象的形式公开错误。Neo4j 错误代码与 GQL 错误代码的主要区别在于后者更加细化。有关更多信息,请参阅 错误处理

Unix 套接字支持

新的 bolt+unix URI 方案允许通过 Unix 套接字连接到 Neo4j 服务器。

有关更多信息,请参阅 通过 Unix 套接字连接

Netty 原生传输支持

Netty 原生传输 增加了针对特定平台的功能,产生的垃圾回收更少,并且与基于 NIO 的传输相比,通常能提高性能。

有关更多信息,请参阅 性能 → 切换到 Netty 原生传输

重大更改与弃用

被弃用的功能很可能会在下一个主要版本中被移除。

版本 消息 状态

6.0

Session — 方法 .readTransaction().writeTransaction() 已被移除,改为使用 .executeRead().executeWrite()。其异步对应方法 .executeReadAsync().executeWriteAsync() 也是如此。新方法的行为类似,但参数类型不同,且新方法不支持 .commit().rollback().close().closed() 方法。

已移除

6.0

接口 RxSession 已被移除,改为使用 ReactiveSession (Flow)ReactiveSession (reactivestreams)
有关响应式示例,请参阅 通过响应式流控制结果流

已移除

6.0

Session — 方法 .asyncSession().reactiveSession() 已被移除。请使用 Session(Class),其中 Class 用于控制所需的会话类型。

已移除

6.0

Config.TrustStrategy — 方法 .certFile() 已被移除,改为使用 .certFiles()

已移除

6.0

Notification — 方法 .severity() 已被移除。请使用 .rawSeverityLevel() 获取原始值,使用 .severityLevel() 获取枚举值。

已移除

6.0

书签 (Bookmarks)

  • 方法 Session.lastBookmark() 已被移除,改为使用 .lastBookmarks()

  • Bookmark 不再支持通过多个值(如 Set<String>)进行初始化;只能传递单个 String。多个值现在通过 Bookmark 的多个实例来支持。

已移除

6.0

默认的驱动程序日志记录实现已从 Logging.none() 更改为 Logging.systemLogging()

已更改

5.0

Node, Relationship — 方法 .id() (long) 已被弃用,改为使用 .elementId() (string)。

已弃用

5.0

Relationship — 方法 .startNodeId().endNodeId() 已被弃用,改为使用 .startNodeElementId().endNodeElementId()。旧标识符为 long 类型,而新的 ElementIds 为 string 类型。

已弃用

6.0

作为 Neo4j 状态代码的 通知 (Notifications) 已被弃用,改为使用 GQL 状态对象。

因此:

已弃用

6.0

驱动程序的日志记录抽象已被弃用,改为使用 System.Logger。因此:

已弃用