破坏性变更
本节描述了 Neo4j 1.7 驱动程序和 4.x 驱动程序之间的破坏性变更。
配置
-
驱动程序的默认加密配置现在为 false,这意味着驱动程序默认只尝试纯文本连接。与加密服务(例如 Neo4j Aura)的连接必须设置为加密。
-
当显式启用加密时,默认是信任操作系统信任的 CA。这意味着,默认情况下,到持有自签名证书的服务器的加密连接将在证书验证时失败。
-
当加密开启时,默认开启主机名验证。
有关更多信息,请参阅《Neo4j 驱动程序手册 4.0 → 配置》。 |
连接 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
方法使用会话配置对象或选项构建器,而不是方法参数。 -
书签已从字符串和/或字符串列表更改为 Bookmark 对象。
-
对于同步的 Transaction API,
Transaction#success
和Transaction#failure
已被移除。 -
Transaction 对象的
success
/close
模式现已过时,并完全被commit
和rollback
方法取代。然而,与Transaction#success
仅标记事务成功并等待Transaction#close
执行实际提交不同,Transaction#commit
会立即提交事务。4.0 中的事务只能提交或回滚一次。如果事务没有使用
Transaction#commit
显式提交,Transaction#close
将回滚事务。 -
Statement
已更名为Query
。StatementResult
已更名为Result
。类似地,StatementResultCursor
已更名为ResultCursor
。 -
一个结果只能被消费一次。
-
如果查询结果已通过调用
Result#consume
丢弃,和/或创建结果的外部作用域(例如事务或会话)已关闭,则结果被视为已消费。尝试访问已消费的结果将导致ResultConsumedException
。 -
实验性的
StatementRunner.typeSystem()
已移至Driver.defaultTypeSystem()
。 -
LoadBalancingStrategy
已从 Config 类中移除,驱动程序始终默认为LeastConnectedStrategy
。
有关特定驱动程序的破坏性变更的更多信息,请参阅其各自的章节