Java Driver

Connect to Traverse from Java using the official Neo4j Bolt driver.

Install

Maven

<dependency>
    <groupId>org.neo4j.driver</groupId>
    <artifactId>neo4j-java-driver</artifactId>
    <version>6.0.3</version>
</dependency>

Gradle

implementation 'org.neo4j.driver:neo4j-java-driver:6.0.3'

Connect

import org.neo4j.driver.*;

try (var driver = GraphDatabase.driver("bolt://localhost:7690")) {
    driver.verifyConnectivity();
}

// With authentication
try (var driver = GraphDatabase.driver(
        "bolt://localhost:7690",
        AuthTokens.basic("admin", "s3cret"))) {
    driver.verifyConnectivity();
}

Run Queries

try (var driver = GraphDatabase.driver("bolt://localhost:7690")) {
    var result = driver.executableQuery(
            "MATCH (n:Person) WHERE n.age > $minAge RETURN n.name, n.age")
        .withParameters(Map.of("minAge", 25))
        .execute();

    for (var record : result.records()) {
        System.out.println(record.get("n.name").asString());
        System.out.println(record.get("n.age").asInt());
    }
}

Select a Database

var result = driver.executableQuery("MATCH (n) RETURN count(n) AS count")
    .withConfig(QueryConfig.builder().withDatabase("mydb").build())
    .execute();
System.out.println(result.records().getFirst().get("count").asLong());

Write Data

driver.executableQuery("CREATE (p:Person {name: $name, age: $age})")
    .withParameters(Map.of("name", "Alice", "age", 30))
    .execute();

Session-Based Queries

try (var session = driver.session(SessionConfig.forDatabase("mydb"))) {
    var result = session.run(
        "MATCH (n:Person) RETURN n.name",
        Map.of()
    );
    while (result.hasNext()) {
        System.out.println(result.next().get("n.name").asString());
    }
}

Transactions

try (var session = driver.session()) {
    // Transaction function (recommended — auto-retries on transient errors)
    session.executeWrite(tx -> {
        tx.run("CREATE (p:Person {name: $name, age: $age})",
            Map.of("name", "Dave", "age", 28));
        return null;
    });

    // Explicit transaction
    var tx = session.beginTransaction();
    tx.run("CREATE (p:Person {name: 'Bob'})");
    tx.run("CREATE (p:Person {name: 'Carol'})");
    tx.commit();
}

Graph Types

var result = driver.executableQuery(
        "MATCH (n:Person)-[r:KNOWS]->(m) RETURN n, r, m LIMIT 1")
    .execute();
var record = result.records().getFirst();

Node node = record.get("n").asNode();
System.out.println(node.labels());           // [Person]
System.out.println(node.get("name").asString());

Relationship rel = record.get("r").asRelationship();
System.out.println(rel.type());              // KNOWS

Close the Driver

driver.close();

Note: Traverse speaks Bolt 5.1–6.0. See Bolt Protocol for details.