Introducción al trabajo con bases de datos en Kotlin
Kotlin es un lenguaje de programación moderno que se utiliza activamente para crear aplicaciones de servidor, desarrollo Android y servicios backend. Una de las habilidades clave para cualquier desarrollador es saber trabajar con bases de datos. En este artículo, analizaremos cómo conectarse a la base de datos relacional PostgreSQL y a la base de datos documental MongoDB, utilizando Kotlin. El material está orientado a principiantes: veremos la instalación de drivers, la configuración de la conexión y la realización de operaciones CRUD básicas (crear, leer, actualizar, eliminar).
1. Preparación del entorno y dependencias
Para trabajar, necesitarás un proyecto en Kotlin (por ejemplo, usando Gradle o Maven). Usaremos Gradle, la herramienta de compilación más popular en el ecosistema Kotlin. Agrega las siguientes dependencias al archivo build.gradle.kts:
dependencies { // Para PostgreSQL implementation("org.jetbrains.exposed:exposed-core:0.44.1") implementation("org.jetbrains.exposed:exposed-dao:0.44.1") implementation("org.jetbrains.exposed:exposed-jdbc:0.44.1") implementation("org.postgresql:postgresql:42.7.1")
// Para MongoDB implementation("org.mongodb:mongodb-driver-kotlin-sync:4.11.1") implementation("org.mongodb:bson-kotlinx:4.11.1")}Exposed es una biblioteca ORM ligera para Kotlin que simplifica el trabajo con bases de datos SQL. Para MongoDB, usamos el driver oficial de Kotlin de MongoDB.
2. Trabajo con PostgreSQL a través de Exposed
2.1. Conexión a la base de datos
Primero, crearemos un objeto para la conexión a PostgreSQL. Asegúrate de que el servidor PostgreSQL esté ejecutándose en tu computadora y que se haya creado una base de datos (por ejemplo, testdb).
import org.jetbrains.exposed.sql.Databaseimport org.jetbrains.exposed.sql.transactions.transaction
fun main() { // Conexión a la BD local Database.connect( url = "jdbc:postgresql://localhost:5432/testdb", driver = "org.postgresql.Driver", user = "postgres", password = "your_password" )
println("Conexión a PostgreSQL establecida exitosamente")}Después de la conexión, se pueden ejecutar consultas SQL. Exposed utiliza DSL (Domain-Specific Language) para escribir consultas en Kotlin.
2.2. Creación de tabla y operaciones CRUD
Definamos una tabla simple Users con los campos id, name y email:
import org.jetbrains.exposed.sql.*import org.jetbrains.exposed.sql.transactions.transaction
object Users : Table() { val id = integer("id").autoIncrement() val name = varchar("name", 50) val email = varchar("email", 100)
override val primaryKey = PrimaryKey(id)}
fun main() { Database.connect(...)
transaction { // Creación de la tabla SchemaUtils.create(Users)
// INSERT (crear) Users.insert { it[name] = "Iván Petrov" it[email] = "ivan@example.com" }
// SELECT (leer) val users = Users.selectAll().map { "${it[Users.id]}: ${it[Users.name]} (${it[Users.email]})" } println("Usuarios: $users")
// UPDATE (actualizar) Users.update({ Users.id eq 1 }) { it[name] = "Iván Sidorov" }
// DELETE (eliminar) Users.deleteWhere { Users.id eq 1 } }}Como puedes ver, el código es muy similar al SQL normal, pero está escrito en Kotlin puro. Exposed escapa automáticamente los nombres y protege contra inyecciones SQL.
3. Trabajo con MongoDB a través de Kotlin Driver
3.1. Conexión a MongoDB
MongoDB es una base de datos NoSQL que almacena datos en documentos similares a JSON. Para la conexión, usamos el driver síncrono:
import com.mongodb.kotlin.client.coroutine.MongoClientimport kot