Skip to content
Proyectos

surrealdb/surrealdb.java has 90 GitHub stars and 28 forks. Star changes are not measured yet. Last checked 2026-11-14 04:45 UTC. Last push 2026-11-04.

Cómo se miden estas cifras

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.

Crecimiento de estrellas medido

in 24h
Recopilando historial
in 7 days
Recopilando historial
in 15 days
Recopilando historial
in 1 month
Recopilando historial

Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.

Acerca de

SurrealDB SDK for Java

Datos

README.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 record classes (JDK 16+) for create / select.
  • All geometry types (Point, LineString, Polygon, their multi-variants, and GeometryCollection) for reading and writing.
  • Live queries: subscribe to table changes with selectLive and terminate them by id with kill.
  • 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

Explorar proyectos relacionados