The Kotlin SDK for Onyx Database provides an object-oriented persistence API with embedded, in-memory, and remote database options. Follow the README-driven workflow to configure Gradle, choose a persistence manager, and start working with entities.
Onyx Database is an open-source, Kotlin-first database. The Kotlin API centers on thePersistenceManager and PersistenceManagerFactory abstractions, so you can switch between embedded or remote deployments without rewriting entity code.
Add the GitHub Packages repository (requires a GitHub PAT with read:packages):
repositories {
mavenCentral()
maven {
url = uri("https://maven.pkg.github.com/OnyxDevTools/onyx-database-parent")
credentials {
username = "YOUR_GITHUB_USERNAME"
password = "YOUR_GITHUB_PERSONAL_ACCESS_TOKEN"
}
}
}Choose a persistence manager
Initialize the correct factory for your deployment type. Embedded databases use local storage, while remote databases connect to a server endpoint.
// Embedded database
val factory = EmbeddedPersistenceManagerFactory("/path/to/your/database")
factory.setCredentials("username", "password")
factory.initialize()
val manager = factory.persistenceManager// Remote database
val factory = RemotePersistenceManagerFactory("onx://your_database_host:port")
factory.setCredentials("username", "password")
factory.initialize()
val manager = factory.persistenceManagerModel your data with annotated Kotlin classes that implement IManagedEntity:
@Entity
class User : ManagedEntity() {
@Identifier
@Attribute
override var primaryKey: Long = 0
@Attribute
var name: String? = null
@Index
@Attribute
var email: String? = null
}Persist and query entities with the persistence manager:
val user = User()
user.name = "John Doe"
user.email = "john@example.com"
val savedUser = manager.saveEntity(user)
val users = manager.executeQuery<User>(
Query(User::class.java).where("name" eq "John Doe")
)