This chapter introduces the difference between the Neo4j 1.7 drivers and the Neo4j 4.x drivers.

From 4.0, the drivers are built to provide a user-friendly and unified API across all languages.

In previous versions of Neo4j, client-server communication uses encrypted local connections and generated a self-signed certificate out of the box. From 4.0 however, the default is set to unencrypted. Please see Driver Manual → Connection URIs for more information.

Neo4j 4.0 introduces a reactive API, compatible with the Reactive Streams standard. This enables fine-grained control of the data flow for Cypher query results, including the ability to pause or cancel part-way through. Read more in Driver Manual → Queries and results.

When using the 4.x driver to connect to a 4.x database, it is possible to work with multiple databases. From a driver API perspective, this means that one database must be selected for use as an execution context for transactions within a session. This can be configured on session construction. If no database is selected, the driver will connect to the server’s default database.

Drivers 1.7 work in fallback mode with Neo4j 4.x. They do not support features introduced in Neo4j 4.0 and later, such as multiple databases, Neo4j Fabric, and fine-grained access control. To be able to run multiple databases online concurrently and to do distributed queries over them, you must migrate from 1.7 to 4.x.

The examples in this chapter are mainly written in Java, using the Java driver. However, similar code can be translated to other languages.