SkillAgentSearch skills...

Komapper

Kotlin ORM for JDBC and R2DBC

Install / Use

/learn @komapper/Komapper
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Komapper: Kotlin ORM for JDBC and R2DBC

Build Twitter Slack Maven Central Ask DeepWiki

Komapper is an ORM library for server-side Kotlin.

For more documentation, go to our site:

  • https://www.komapper.org/docs/

Features

Highlighted

  • Support for both JDBC and R2DBC
  • Code generation at compile-time using Kotlin Symbol Processing API
  • Immutable and composable queries
  • Support for Kotlin value classes
  • Easy Spring Boot integration

Experimental

  • Quarkus integration
  • Transaction management using context receivers

Prerequisite

  • Kotlin 1.9.24 or later
  • JRE 11 or later
  • Gradle 6.8.3 or later

Supported Databases

Komapper is tested with the following databases:

| Database | version | JDBC support | R2DBC support | |--------------------|---------|:------------:|:-------------:| | H2 Database | 2.3.232 | v | v | | MariaDB | 10.6.3 | v | v | | MySQL v5.x | 5.7.44 | v | v | | MySQL v8.x | 8.0.25 | v | v | | Oracle Database XE | 18.4.0 | v | v | | PostgreSQL | 12.9 | v | v | | SQL Server | 2019 | v | (unstable) |

Supported connectivity types:

  • JDBC 4.3
  • R2DBC 1.0.0

Installation

Add the following code to the Gradle build script (gradle.build.kts).

plugins {
    kotlin("jvm") version "2.2.21"
    id("com.google.devtools.ksp") version "2.3.0"
}

val komapperVersion = "6.0.0"

dependencies {
    platform("org.komapper:komapper-platform:$komapperVersion").let {
        implementation(it)
        ksp(it)
    }
    implementation("org.komapper:komapper-starter-jdbc")
    implementation("org.komapper:komapper-dialect-h2-jdbc")
    ksp("org.komapper:komapper-processor")
}

See also Quickstart for more details:

  • https://www.komapper.org/docs/quickstart/

Sample code

To get complete code, go to our example repository.

Entity class definition

@KomapperEntity
data class Address(
    @KomapperId
    @KomapperAutoIncrement
    @KomapperColumn(name = "ADDRESS_ID")
    val id: Int = 0,
    val street: String,
    @KomapperVersion
    val version: Int = 0,
    @KomapperCreatedAt
    val createdAt: LocalDateTime? = null,
    @KomapperUpdatedAt
    val updatedAt: LocalDateTime? = null,
)

Connecting with JDBC

fun main() {
    // create a Database instance
    val db = JdbcDatabase("jdbc:h2:mem:example;DB_CLOSE_DELAY=-1")

    // get a metamodel
    val a = Meta.address

    // execute simple operations in a transaction
    db.withTransaction {
        // create a schema
        db.runQuery {
            QueryDsl.create(a)
        }

        // INSERT
        val newAddress = db.runQuery {
            QueryDsl.insert(a).single(Address(street = "street A"))
        }

        // SELECT
        val address = db.runQuery {
            QueryDsl.from(a).where { a.id eq newAddress.id }.first()
        }
    }
}

Connecting with R2DBC

suspend fun main() {
    // create a Database instance
    val db = R2dbcDatabase("r2dbc:h2:mem:///example;DB_CLOSE_DELAY=-1")

    // get a metamodel
    val a = Meta.address

    // execute simple operations in a transaction
    db.withTransaction {
        // create a schema
        db.runQuery {
            QueryDsl.create(a)
        }

        // INSERT
        val newAddress = db.runQuery {
            QueryDsl.insert(a).single(Address(street = "street A"))
        }

        // SELECT
        val address = db.runQuery {
            QueryDsl.from(a).where { a.id eq newAddress.id }.first()
        }
    }
}

Design Policy

See DESIGN_DOC for the design policy of this project.

Compatibility Matrix

| Kotlin and KSP version | Komapper version | KSP2 support? | JRE min version | Gradle min version | |:-----------------------|:-----------------|---------------|:----------------|--------------------| | 1.9.24-1.0.20 | 1.18.1 - 2.x | No | 11 | 6.8.3 | | 2.0.21-1.0.28 | 2.x - 5.x | Yes | 11 | 7.6.4 | | 2.1.21-2.0.2 | 5.x | Yes | 11 | 7.6.4 | | 2.2.20-2.0.3 | 5.x | Yes | 11 | 7.6.4 | | 2.3.0 | 5.x | Yes | 11 | 7.6.4 |

Compatibility testing is performed in the komapper/compatibility-test repository.

Financial Contributors

Support Komapper's development on Open Collective.

Organizations

Organizations

Individuals

Individuals

Powered by

JetBrains logo.

Related Skills

View on GitHub
GitHub Stars339
CategoryData
Updated2d ago
Forks19

Languages

Kotlin

Security Score

100/100

Audited on Apr 3, 2026

No findings