surrealdb/surrealdb.java
surrealdb/surrealdb.java has 90 GitHub stars and 28 forks. Star changes are not measured yet. Last checked 2026-11-14 02:23 UTC. Last push 2026-11-04.
What you can do
- A thread-safe native JAVA client for SurrealDB.
- Simple API: see docs.
- Support of 'memory' (embedded SurrealDB).
- Support of remote connection to SurrealDB.
Measured star growth
- in 24h
- Collecting history
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
SurrealDB SDK for Java
DataREADME.md
Original
The official SurrealDB SDK for Java
surrealdb.java
The official SurrealDB SDK for Java.
Documentation
View the SDK documentation here.
Features
- A thread-safe native JAVA client for SurrealDB.
- Simple API: see docs.
- Support of 'memory' (embedded SurrealDB).
- Support of remote connection to SurrealDB.
- Mutable POJOs (Java 8+) and immutable
recordclasses (JDK 16+) forcreate/select. - All geometry types (Point, LineString, Polygon, their multi-variants, and GeometryCollection) for reading and writing.
- Live queries: subscribe to table changes with
selectLiveand terminate them by id withkill. - Supported on JAVA JDK 8, 11, 17, 21, 25.
- Supported architectures:
- Linux (ARM) aarch64
- Linux (INTEL) x86_64
- Windows (INTEL) x86_64
- MacOS (ARM) aarch64
- MacOS (INTEL) x86_64
- Android (Linux ARM) aarch64
- Android (Linux INTEL) x86_64
- Zero dependencies
Minimum requirements
- Java 8
How to install
Stable release
Released to Maven Central.
Gradle:
ext {
surrealdbVersion = "2.2.0"
}
dependencies {
implementation "com.surrealdb:surrealdb:${surrealdbVersion}"
}
Maven:
<dependency>
<groupId>com.surrealdb</groupId>
<artifactId>surrealdb</artifactId>
<version>2.2.0</version>
</dependency>
Snapshot release
Published to the Maven Central snapshots repository on every push to main. Use it to try out unreleased changes.
Gradle:
repositories {
mavenCentral()
maven {
url = uri("https://central.sonatype.com/repository/maven-snapshots/")
mavenContent { snapshotsOnly() }
}
}
ext {
surrealdbVersion = "2.1.2-SNAPSHOT"
}
dependencies {
implementation "com.surrealdb:surrealdb:${surrealdbVersion}"
}
Maven:
<repositories>
<repository>
<id>central-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<dependency>
<groupId>com.surrealdb</groupId>
<artifactId>surrealdb</artifactId>
<version>2.1.2-SNAPSHOT</version>
</dependency>
Getting started
package org.example;
import com.surrealdb.Surreal;
import com.surrealdb.RecordId;
import java.util.Iterator;
public class Example {
public static void main(String[] args) {
try (final Surreal driver = new Surreal()) {
// Connect to the instance
driver.connect("memory");
// namespace & database
driver.useNs("test").useDb("test");
// Create a person
Person person = new Person("Founder & CEO", "Tobie", "Morgan Hitchcock", true);
// Insert a record
List<Person> tobie = driver.create(Person.class, "person", person);
// Read records
Iterator<Person> people = driver.select(Person.class, "person");
// Print them out
System.out.println("Tobie = " + tobie);
System.out.println("people = " + people.next());
}
}
static class Person {
RecordId id;
String title;
String firstName;
String lastName;
boolean marketing;
// A default constructor is required
public Person() {
}
public Person(String title, String firstName, String lastName, boolean marketing) {
this.title = title;
this.firstName = firstName;
this.lastName = lastName;
this.marketing = marketing;
}
@Override
public String toString() {
return "Person{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", marketing=" + marketing +
'}';
}
}
}
Geometry
All GeoJSON-style geometry types are supported — Point, LineString, Polygon,
MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection — for both
reading and writing. Coordinates use java.awt.geom.Point2D.Double, where x is the
longitude and y is the latitude.
import com.surrealdb.Geometry;
import com.surrealdb.Surreal;
import com.surrealdb.Value;
import java.awt.geom.Point2D;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
try (final Surreal driver = new Surreal()) {
driver.connect("memory").useNs("test").useDb("test");
// Build a geometry in Java and store it via a bound parameter
Geometry route = Geometry.lineString(Arrays.asList(
new Point2D.Double(-0.118, 51.51),
new Point2D.Double(-0.121, 51.50)));
Map<String, Object> params = new HashMap<>();
params.put("route", route);
driver.query("UPSERT path:1 SET route = $route", params);
// Read it back
Value value = driver.query("SELECT VALUE route FROM path:1").take(0).getArray().get(0);
Geometry geom = value.getGeometry();
System.out.println(geom.getType()); // LineString
System.out.println(geom.getLineString()); // [Point2D.Double[...], Point2D.Double[...]]
}
Reports
Developing
On Linux/Mac:
cargo build
./gradlew -i test
On Windows:
cargo build
./gradlew.bat -i test
Explore related projects
Asabeneh/30-Days-Of-Python
The 30 Days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than 100 days. Follow your own pace. These videos may help too: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,711 starsgrafana/grafana
The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
77,894 starsredis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine.
77,490 starsapache/superset
Apache Superset is a Data Visualization and Data Exploration Platform
75,522 stars