{"id":25569584,"url":"https://github.com/komapper/komapper","last_synced_at":"2025-10-24T16:36:09.892Z","repository":{"id":37085594,"uuid":"349909214","full_name":"komapper/komapper","owner":"komapper","description":"Kotlin ORM for JDBC and R2DBC","archived":false,"fork":false,"pushed_at":"2025-02-11T12:00:32.000Z","size":6497,"stargazers_count":308,"open_issues_count":8,"forks_count":16,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-02-11T12:05:42.548Z","etag":null,"topics":["jdbc","kotlin","ksp","orm","r2dbc","server-side","sql"],"latest_commit_sha":null,"homepage":"https://www.komapper.org","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/komapper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"komapper"}},"created_at":"2021-03-21T05:35:15.000Z","updated_at":"2025-02-09T01:33:38.000Z","dependencies_parsed_at":"2023-02-18T07:45:50.305Z","dependency_job_id":"2d4ce604-3191-4ea2-905d-6002a9d8eb99","html_url":"https://github.com/komapper/komapper","commit_stats":{"total_commits":1743,"total_committers":9,"mean_commits":"193.66666666666666","dds":0.5088927137119907,"last_synced_commit":"a42a6ed53cdcdcf0ff80c87af5dbfe0f2a101fac"},"previous_names":[],"tags_count":75,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komapper%2Fkomapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komapper%2Fkomapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komapper%2Fkomapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/komapper%2Fkomapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/komapper","download_url":"https://codeload.github.com/komapper/komapper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239933104,"owners_count":19720732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jdbc","kotlin","ksp","orm","r2dbc","server-side","sql"],"created_at":"2025-02-21T00:02:30.711Z","updated_at":"2025-10-24T16:36:09.887Z","avatar_url":"https://github.com/komapper.png","language":"Kotlin","readme":"Komapper: Kotlin ORM for JDBC and R2DBC\n========================================\n\n[![Build](https://github.com/komapper/komapper/actions/workflows/build.yml/badge.svg)](https://github.com/komapper/komapper/actions/workflows/build.yml)\n[![Twitter](https://img.shields.io/badge/News-@komapper-0071BC.svg?style=flat\u0026logo=twitter)](https://twitter.com/komapper)\n[![Slack](https://img.shields.io/badge/Chat-%23komapper-yellow.svg?style=flat\u0026logo=slack)](https://kotlinlang.slack.com/messages/komapper/)\n[![Maven Central](https://img.shields.io/maven-central/v/org.komapper/komapper-platform)](https://search.maven.org/artifact/org.komapper/komapper-platform)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/komapper/komapper)\n\nKomapper is an ORM library for server-side Kotlin.\n\nFor more documentation, go to our site:  \n- https://www.komapper.org/docs/\n\n## Features\n\n### Highlighted\n\n- Support for both JDBC and R2DBC\n- Code generation at compile-time using [Kotlin Symbol Processing API](https://github.com/google/ksp)\n- Immutable and composable queries\n- Support for Kotlin value classes\n- Easy Spring Boot integration\n\n### Experimental\n\n- Quarkus integration\n- Transaction management using context receivers\n\n## Prerequisite\n\n- Kotlin 1.9.24 or later\n- JRE 11 or later\n- Gradle 6.8.3 or later\n\n## Supported Databases\n\nKomapper is tested with the following databases:\n\n| Database           | version | JDBC support | R2DBC support |\n|--------------------|---------|:------------:|:-------------:|\n| H2 Database        | 2.3.232 |      v       |       v       |\n| MariaDB            | 10.6.3  |      v       |       v       |\n| MySQL v5.x         | 5.7.44  |      v       |       v       |\n| MySQL v8.x         | 8.0.25  |      v       |       v       |\n| Oracle Database XE | 18.4.0  |      v       |       v       |\n| PostgreSQL         | 12.9    |      v       |       v       |\n| SQL Server         | 2019    |      v       |  (unstable)   |\n\nSupported connectivity types:\n\n- JDBC 4.3\n- R2DBC 1.0.0\n\n## Installation\n\nAdd the following code to the Gradle build script (gradle.build.kts).\n\n```kotlin\nplugins {\n    kotlin(\"jvm\") version \"2.2.20\"\n    id(\"com.google.devtools.ksp\") version \"2.2.20-2.0.3\"\n}\n\nval komapperVersion = \"5.6.0\"\n\ndependencies {\n    platform(\"org.komapper:komapper-platform:$komapperVersion\").let {\n        implementation(it)\n        ksp(it)\n    }\n    implementation(\"org.komapper:komapper-starter-jdbc\")\n    implementation(\"org.komapper:komapper-dialect-h2-jdbc\")\n    ksp(\"org.komapper:komapper-processor\")\n}\n```\n\nSee also Quickstart for more details:\n\n- https://www.komapper.org/docs/quickstart/\n\n## Sample code\n\nTo get complete code, go to our [example repository](https://github.com/komapper/komapper-examples).\n\n### Entity class definition\n\n```kotlin\n@KomapperEntity\ndata class Address(\n    @KomapperId\n    @KomapperAutoIncrement\n    @KomapperColumn(name = \"ADDRESS_ID\")\n    val id: Int = 0,\n    val street: String,\n    @KomapperVersion\n    val version: Int = 0,\n    @KomapperCreatedAt\n    val createdAt: LocalDateTime? = null,\n    @KomapperUpdatedAt\n    val updatedAt: LocalDateTime? = null,\n)\n```\n\n### Connecting with JDBC\n\n```kotlin\nfun main() {\n    // create a Database instance\n    val db = JdbcDatabase(\"jdbc:h2:mem:example;DB_CLOSE_DELAY=-1\")\n\n    // get a metamodel\n    val a = Meta.address\n\n    // execute simple operations in a transaction\n    db.withTransaction {\n        // create a schema\n        db.runQuery {\n            QueryDsl.create(a)\n        }\n\n        // INSERT\n        val newAddress = db.runQuery {\n            QueryDsl.insert(a).single(Address(street = \"street A\"))\n        }\n\n        // SELECT\n        val address = db.runQuery {\n            QueryDsl.from(a).where { a.id eq newAddress.id }.first()\n        }\n    }\n}\n```\n\n### Connecting with R2DBC\n```kotlin\nsuspend fun main() {\n    // create a Database instance\n    val db = R2dbcDatabase(\"r2dbc:h2:mem:///example;DB_CLOSE_DELAY=-1\")\n\n    // get a metamodel\n    val a = Meta.address\n\n    // execute simple operations in a transaction\n    db.withTransaction {\n        // create a schema\n        db.runQuery {\n            QueryDsl.create(a)\n        }\n\n        // INSERT\n        val newAddress = db.runQuery {\n            QueryDsl.insert(a).single(Address(street = \"street A\"))\n        }\n\n        // SELECT\n        val address = db.runQuery {\n            QueryDsl.from(a).where { a.id eq newAddress.id }.first()\n        }\n    }\n}\n```\n\n## Design Policy\n\nSee [DESIGN_DOC](DESIGN_DOC.md) for the design policy of this project.\n\n## Compatibility Matrix\n\n| Kotlin and KSP version | Komapper version | KSP2 support? | JRE min version | Gradle min version |\n|:-----------------------|:-----------------|---------------|:----------------|--------------------|\n| 1.9.24-1.0.20          | 1.18.1 - 2.x     | No            | 11              | 6.8.3              |\n| 2.0.21-1.0.28          | 2.x - 5.x        | Yes           | 11              | 7.6.4              |\n| 2.1.21-2.0.2           | 5.x              | Yes           | 11              | 7.6.4              |\n| 2.2.20-2.0.3           | 5.x              | Yes           | 11              | 7.6.4              |\n\nCompatibility testing is performed in the [komapper/compatibility-test](https://github.com/komapper/compatibility-test/) repository.\n\n## Backers\n\nIf you use Komapper in your project or enterprise and would like to support ongoing development, \nplease consider becoming a backer. [[Become a backer](https://opencollective.com/komapper#category-CONTRIBUTE)]\n\nOur top backers are shown below!\n\n\u003ca href=\"https://opencollective.com/komapper/backer/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/komapper/backer/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/komapper/backer/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/komapper/backer/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/komapper/backer/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/komapper/backer/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/komapper/backer/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/komapper/backer/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/komapper/backer/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/komapper/backer/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/komapper/backer/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/komapper/backer/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/komapper/backer/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/komapper/backer/6/avatar.svg\"\u003e\u003c/a\u003e\n\n","funding_links":["https://opencollective.com/komapper","https://opencollective.com/komapper/backer/0/website","https://opencollective.com/komapper/backer/1/website","https://opencollective.com/komapper/backer/2/website","https://opencollective.com/komapper/backer/3/website","https://opencollective.com/komapper/backer/4/website","https://opencollective.com/komapper/backer/5/website","https://opencollective.com/komapper/backer/6/website"],"categories":["数据库开发"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkomapper%2Fkomapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkomapper%2Fkomapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkomapper%2Fkomapper/lists"}