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.