重大变更

本节描述 Neo4j 1.7 驱动程序和 4.x 驱动程序之间的重大变更。

配置

  • 驱动程序的默认配置为加密为 false,这意味着驱动程序默认情况下将尝试仅使用纯文本连接。连接到加密服务(例如 Neo4j Aura)必须设置为加密。

  • 当显式启用加密时,默认情况下是信任操作系统信任的 CA。这意味着,默认情况下,到持有自签名证书的服务器的加密连接在证书验证时失败。

  • 启用加密时,主机名验证默认情况下打开。

有关更多信息,请参阅 Neo4j 驱动程序手册 4.0 → 配置

删除版本后缀

v1 已从驱动程序的包名称中删除。例如,在 Java 驱动程序中,所有公共 API 都位于包 org.neo4j.driver 中,而不是旧的 org.neo4j.driver.v1 中。

连接 URI 方案

Neo4j 4.0 为所有部署拓扑公开路由接口,允许 neo4j:// URI 用于所有部署。

Neo4j 3.x 独立实例不公开路由接口。

  • neo4j:// 方案替换 bolt+routing://,可用于集群和单实例配置。这只是一个重命名,neo4j:// URI 仍然可以用于与 Neo4j 3.x 集群通信。

  • bolt:// 方案用于直接连接到特定 Neo4j 服务器。但是,此方案不再是独立机器所必需的。

  • bolt:// 方案主要用于不针对整个服务,而是针对特定机器,例如因果关系集群中的特定服务器或单实例环境中的单个服务器。

  • 推荐的驱动程序连接 URI 方案如下所示

    表 1. 推荐的驱动程序连接 URI 方案。

    4.0 驱动程序

    1.7 驱动程序

    4.0 Neo4j

    单实例

    neo4j

    bolt

    集群核心成员

    neo4j

    neo4j (bolt+routing)

    集群只读副本

    neo4j

    bolt

    3.5 Neo4j

    单实例

    bolt

    bolt

    集群核心成员

    neo4j

    neo4j (bolt+routing)

    集群只读副本

    bolt

    bolt

驱动程序方法的更改

  • 对于同时实现同步和异步方法的驱动程序,异步方法被提取出来并放入 AsyncSession 中,而同步方法保留在 Session 中。此更改确保阻塞和非阻塞 API 永远不会混合在一起。

  • Driver#session 方法使用会话配置对象或选项构建器,而不是方法参数。

  • 书签已从字符串或字符串列表更改为书签对象。

  • 对于同步事务 API,Transaction#successTransaction#failure 已被删除。

  • 事务对象的 success/close 模式现在已过时,并被 commitrollback 方法完全取代。但是,与仅将事务标记为成功然后等待 Transaction#close 执行实际提交的 Transaction#success 不同,Transaction#commit 会立即提交事务。

    4.0 中的事务只能提交或回滚一次。如果事务没有使用 Transaction#commit 显式提交,Transaction#close 将回滚事务。

  • Statement 已重命名为 QueryStatementResult 已重命名为 Result。类似地,StatementResultCursor 已重命名为 ResultCursor

  • 结果只能使用一次。

  • 如果查询结果被丢弃(通过调用 Result#consume),或者创建结果的外部范围(例如事务或会话)已关闭,则结果将被使用。尝试访问已使用的结果将以 ResultConsumedException 响应。

  • 实验性 StatementRunner.typeSystem() 已移至 Driver.defaultTypeSystem()

  • LoadBalancingStrategy 已从 Config 类中删除,驱动程序始终默认使用 LeastConnectedStrategy

有关特定驱动程序的重大变更的更多信息,请参阅其各自的部分