ORM para Kotlin: Exposed vs Ktor vs Ktorm — comparação e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

ORM para Kotlin: comparação e exemplos



Kotlin é uma linguagem moderna, ativamente usada para desenvolvimento de aplicações backend, aplicações Android e até projetos multiplataforma. Para trabalhar com bancos de dados, os desenvolvedores frequentemente escolhem ORM (Object-Relational Mapping) para evitar escrever consultas SQL brutas e acelerar o desenvolvimento. Neste artigo, analisaremos três ferramentas ORM populares para Kotlin: Exposed, Ktor (em conjunto com Exposed) e Ktorm. Compararemos sua sintaxe, desempenho e facilidade de uso com exemplos práticos.



1. Exposed — ORM oficial da JetBrains



Exposed é uma biblioteca ORM desenvolvida pela JetBrains especificamente para Kotlin. Ela suporta duas abordagens: DSL (Domain Specific Language) e DAO (Data Access Objects). O Exposed integra-se perfeitamente com o framework Ktor, mas também pode ser usado separadamente.



Principais características:

  • Sintaxe DSL leve e intuitiva.
  • Suporte a transações, migrações e conexões.
  • Trabalha com PostgreSQL, MySQL, H2, SQLite e outros bancos.
  • Comunidade ativa e documentação oficial.


Exemplo de código (abordagem DSL):

import org.jetbrains.exposed.sql.*import org.jetbrains.exposed.sql.transactions.transaction

// Definição da tabelaobject Users : Table() { val id = integer("id").autoIncrement() val name = varchar("name", 50) val age = integer("age")

override val primaryKey = PrimaryKey(id)}

// Exemplo de consultafun main() { Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")

transaction { SchemaUtils.create(Users)

// Inserção Users.insert { it[name] = "Alice" it[age] = 30 }

// Seleção val result = Users.selectAll().where { Users.age greater 25 } result.forEach { println("${it[Users.name]}: ${it[Users.age]}") } }}


2. Ktor + Exposed — combinação para aplicações web



Ktor é um framework web assíncrono para Kotlin. Embora o Ktor em si não forneça um ORM embutido, ele funciona muito bem em conjunto com o Exposed. Essa combinação permite criar APIs REST com o mínimo de código.



Exemplo de integração do Ktor com Exposed:

import io.ktor.server.application.*import io.ktor.server.routing.*import io.ktor.server.response.*import org.jetbrains.exposed.sql.*import org.jetbrains.exposed.sql.transactions.transaction

fun Application.module() { Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver")

routing { get("/users") { val users = transaction { Users.selectAll().map { mapOf("name" to it[Users.name], "age" to it[Users.age]) } } call.respond(users) } }}


Essa abordagem é adequada para microsserviços e projetos pequenos, onde a simplicidade e a velocidade de desenvolvimento são importantes.



3. Ktorm — ORM leve e performático



Ktorm é outro ORM popular para Kotlin, focado em desempenho e minimalismo. Ele utiliza programação funcional e suporta tanto DSL quanto sintaxe semelhante a SQL.



Principais características:

  • Alto desempenho devido à ausência de reflexão.
  • Suporte a extensões (por exemplo, para campos JSON).
  • Configuração simples e dependências mínimas.
  • Trabalha com a maioria dos SGBDs populares.


Exemplo de código Ktorm:

import me.liuwj.ktorm.database.Databaseimport me.liuwj.ktorm.dsl.*import me.liuwj.ktorm.entity.*

// Definição da entidadeinterface User : Entity { compan

Recommendations